Запуск задачи в фоновом режиме, когда пользовательский интерфейс доступен для взаимодействияC#

Место общения программистов C#
Ответить
Anonymous
 Запуск задачи в фоновом режиме, когда пользовательский интерфейс доступен для взаимодействия

Сообщение Anonymous »

Изучив Async/Await и Threading, я все еще не уверен, как правильно применить их в моей ситуации. Независимо от того, какой вариант я пробую, мой пользовательский интерфейс все равно зависает, потому что я, похоже, не вызываю желаемую функцию асинхронно, кроме того, мне действительно может понадобиться многопоточность для моего решения.

Что я пытаюсь сделать: у меня есть приложение WPF, в котором есть кнопка, с помощью которой я хотел бы запустить операцию, которая по-прежнему позволяет взаимодействовать с программой через пользовательский интерфейс или иным образом. Как только будет выполнено условие, определенное вне этой функции, функция должна завершиться. Для меня это звучит довольно стандартно, но у меня такое ощущение, что я что-то не понимаю и неправильно это реализовал.

Что у меня есть сейчас:

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

private async void start_button_Click(object sender, RoutedEventArgs e)
{
await StaticClass.MyFunction();
}

private void stop_button_Click(object sender, RoutedEventArgs e)
{
StaticClass.stopFlag = true;
}

public static Task myFunction()
{
//Stuff Happens

while(StaticClass.stopFlag == false)
//Do Stuff

//Stuff Happens

return Task.FromResult(1) //I know this is bad, part of the reason I'm asking
}
Я надеялся получить какое-нибудь руководство о том, правильно ли я подхожу к этому, и какое-либо понимание того, что я делаю неправильно.

Подробнее здесь: https://stackoverflow.com/questions/214 ... teractable
Ответить

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

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

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

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

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