我有UI,我想保持响应 - 我有两个程序,我想运行异步。
有两种情况:
目前我保留一个布尔值('procAWorking'),当我启动worker A时,我设置为'true',当调用Proc A的RunWorkerCompleted事件时,我设置为'false'。
对于方案1,没问题。 对于方案2,我从方法中调用Proc A,然后使用'while'循环等待Proc A表明它已完成。
这是一种合适的方法吗?是否有更好的理解做法?
...
ProcA(); // method creates BW and calls RunWorkerAsync()
while(procAWorking)
{
Thread.Sleep(1000);
}
ProcB(); // method creates different BW and calls RunWorkerAsync()
答案 0 :(得分:1)
如果使用async / await,实际上很容易做到你想做的事。
你需要procA和procB都是异步方法:
async Task ProcA()
{
//ProcA work here, delay to simulate work
await Task.Delay(1000);
}
async Task ProcB()
{
//ProcB work here, delay to simulate work
await Task.Delay(1000);
}
然后你就可以这样称呼它:
async Task DoStuff()
{
await ProcA();
await ProcB();
}
答案 1 :(得分:0)
如果您已经为false
处理程序设置了RunWorkerCompleted
的标记,那么为什么不在那时开始第二次后台处理。
因此,只需从您的代码中调用ProcA
,然后从第一个后台工作人员的ProcB
调用RunWorkerCompleted
...