【发布时间】:2017-12-29 13:24:11
【问题描述】:
所以我有一个执行任务的后台工作人员,我需要程序在继续之前等待该任务完成,目前我正在这样做:
while(backgroundwork.IsBusy)
{
Thread.Sleep(10);
}
但是当我运行这个程序时,程序只是停止运行,似乎后台工作人员一直在运行,但事实并非如此,工作人员中没有循环,它之前已经完成了它的任务。
我可能错过了什么?
【问题讨论】:
-
有什么阻止你使用后台工作者完成的事件吗?
-
Thread.Sleep将导致当前线程(即前台线程)休眠。当它在睡觉时,它什么也没做。展示如何创建后台工作人员的代码。 -
后台工作者的全部意义在于UI线程不等待它完成。如果你这样做,你也可以直接调用代码,而不是通过后台工作人员。使用后台工作人员的正确方法是订阅
RunWorkerCompleted事件并在任务完成后在 UI 中执行任何需要完成的操作那里。 -
@Heinzi 我认为该评论可能是答案。虽然你不能真正回答一个不完整的问题:(
-
请阅读如何创建minimal, complete, verifiable example 并通过编辑将缺少的信息添加到您的帖子中:) 如果您还没有阅读how to ask,我建议您这样做:) 我强烈推荐遵循我链接的 2 个指南,因为当帖子遵循这些指南时,SO 上的人更有可能回答问题。我特别缺少的是 - 到目前为止你尝试了什么?您面临哪些错误/问题?您可能有有助于理解您的问题的 coden-ps 吗?欢迎使用 StackOverflow
标签: c# backgroundworker