C# 多线程/异步:在UI可交互的同时在后台运行任务

12 浏览
0 Comments

C# 多线程/异步:在UI可交互的同时在后台运行任务

在研究了Async/Await和Threading之后,我仍然不确定如何正确地应用它们到我的情况中。无论我尝试哪种变化,我的UI仍然会卡住,因为我似乎没有异步调用我的期望函数,此外,我可能确实需要使用线程来解决我的问题。

我想要做的事情:我有一个WPF应用程序,上面有一个按钮,我希望该按钮能够启动一个操作,同时仍然允许通过UI或其他方式与程序进行交互。一旦满足了在该函数之外确定的条件,该函数应该结束。对我来说,这听起来相当标准,但我有一种感觉我对某些东西有误解,并且我实现得不正确。

我目前的做法:

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()
{
    //一些操作
    while(StaticClass.stopFlag == false)
        //做一些事情
    //一些操作
    return Task.FromResult(1) //我知道这样做是不好的,这也是我询问的原因之一
}

我希望能得到一些指导,看看我是否以正确的方式进行了处理,并了解我做错了什么。

0