Общая асинхронная задача в окне WPF — API AutocadC#

Место общения программистов C#
Ответить
Anonymous
 Общая асинхронная задача в окне WPF — API Autocad

Сообщение Anonymous »

У меня есть стандартное окно WPF, оно использует шаблон MVVM. Итак, как только он объявлен, он получает объект ViewModel. Целью этого окна является отображение пользователя во время выполнения длительных операций в среде API Autocad. Весь мой код находится внутри файла dll.
Как передать метод из другого класса для запуска внутри метода StartTask?
Должно быть универсальный способ, поскольку многие методы можно вызывать из этого окна. Это можно сделать внутри объекта ViewModel.

Код: Выделить всё

public partial class BusyIndicatorView : Window
{
internal BusyIndicatorViewModel BusyIndicatorViewModel { get; set; }

public BusyIndicatorView(BusyIndicatorViewModel busyIndicatorViewModel)
{
InitializeComponent();
BusyIndicatorViewModel = busyIndicatorViewModel;
StartTask();
}

private async void StartTask()
{
try
{
while (true)
{
// I gotta run here the generic method
}

Close();
}
catch (Exception ex)
{
MessageBox.Show("Error");
}
}
}
Асинхронный метод StartTask внутри Window — это способ сделать интерфейс отзывчивым при выполнении тяжелой работы.
Объявление окна и следующая задача не соответствует моим потребностям, потому что окно не отвечает. API Autocad не поддерживает многопоточность.

Код: Выделить всё

var heavyTask = new HeavyTask();
var window = new Window();
heavyTask.Start();
window.Show();
Я ожидаю увидеть окно, которое будет отображаться во время выполнения длительной операции. Окно отображает ход выполнения и является адаптивным, позволяя пользователю перемещать его и нажимать кнопки.


Подробнее здесь: https://stackoverflow.com/questions/786 ... utocad-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»