是否可以按顺序启动后台工作人员?

时间:2019-03-26 22:51:24

标签: c# backgroundworker sequential

我想按顺序使用3个后台工作者。

第一个应该完成一项工作,更新UI并启动第二个同样执行的后台工作程序,然后启动最后一个。仅当再次单击按钮时,才应重复此操作。有可能获得这种行为吗?

The period . matches any single character.

1 个答案:

答案 0 :(得分:1)

背景工作者的原因尚不清楚。

但是,您可以执行以下操作(假设没有合法的async IO工作,并且这些任务不需要从非 threadpool线程)。

注意 :如果有合法的async IO工作,则无需将{\ { 1}},只需使用Task

优点是:

  • 其顺序
  • 其因素更简单(自由度较小)
  • 更容易阅读
  • 它使用异步等待模式(并释放消息泵 / UI线程
  • 并且将与 UI更新
  • 一起使用

示例

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合适,因此您需要确保处理除了您的例外情况(因为这是不可观察的)。您可能还想防止双击