Посмотрев вокруг как на 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<int> 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
}
Я надеялся на некоторое руководство, если я подхожу к этому правильно и понимаю, что я делаю неправильно.