【发布时间】:2018-12-31 01:52:13
【问题描述】:
当其中的 foreach 循环刚刚返回 1 次时,我的 Background Worker 对象触发“RunWorkerCompleted”事件,无论该触发后循环旋转多长时间,都不会再次触发它(我说的是当前会话) .他为什么这样做?如何解决?
(后台DoWork事件使用“private async void”关键字,有一个foreach循环,该循环中有一个由“await”触发的方法。)
一个例子;
private async void bgwCheckFiles_DoWork(object sender, DoWorkEventArgs e)
{
string a;
foreach (string s in lblist.Items) { a = await getMD5HashFromFile2(s); }
}
private void bgwCheckFiles_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ MessageBox.Show("Process ended."); }
当这段代码还没有完成时,系统是“进程结束”。给出这个消息。
【问题讨论】:
-
private async voiderr,我对此感到难过.. 无论如何,任何代码 sn-p we can try to fiddle with? -
@BagusTesa,已编辑。
-
从 BackGroundWorker 的
DoWork事件中删除任何async/await内容。
标签: c# foreach async-await backgroundworker