我想按顺序使用3个后台工作者。
第一个应该完成一项工作,更新UI并启动第二个同样执行的后台工作程序,然后启动最后一个。仅当再次单击按钮时,才应重复此操作。有可能获得这种行为吗?
The period . matches any single character.
答案 0 :(得分:1)
背景工作者的原因尚不清楚。
但是,您可以执行以下操作(假设没有合法的async
IO工作,并且这些任务不需要从非 threadpool线程)。
注意 :如果有合法的async
IO工作,则无需将{\ { 1}},只需使用Task
)
优点是:
示例
await
注意 :由于这是private async void btnStartAsyncOperation_Click(object sender, EventArgs e)
{
try
{
await Task.Run(() => FirstTask1());
// update the ui
await Task.Run(() => FirstTask2());
// update the ui
await Task.Run(() => FirstTask3());
// update the ui
}
catch (Exception exception)
{
// make sure you catch or do something with exception
}
}
,而event
合适,因此您需要确保处理除了您的例外情况(因为这是不可观察的)。您可能还想防止双击