BackgroundWorker
在没有用户互动/更改的情况下运行的时间是否有限制?我离开了一个WPF
程序,其中一个程序运行了一夜,它在某个时刻停止了。我可以按下按钮在早上触发DoWork
,它会再次启动。
我还不确定它是否被解雇RunWorkerCompleted
,我没有添加事件,显然需要很长时间才能进行测试。工作人员按下按钮开始,并且连续循环,抓取数据并将其打印到GUI。
while (true)
{
//Crawl for data, output to WPF window
}
循环仅在取消按下另一个按钮时才退出,我从未按下该按钮。
我只是好奇BackgroundWorker
类是否存在某种记录的超时。
答案 0 :(得分:1)
根据我的评论,您可能会发现您的工作人员遇到了异常。这不一定会使您的程序崩溃,所以尝试类似于以下内容
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error == null)
{
//Worker completed successfully
}
else
{
//An error was thrown
}
}
答案 1 :(得分:0)
理论上它应该永远运行。为了测试它是否真的死了,我会考虑添加一些基本的日志记录。此外,快速检查显示了这可能是正在发生的事情。
BackgroundWorker dies unexpectedly
我会添加RunWorkerCompleted事件处理以查看是否是这种情况。
答案 2 :(得分:0)
BackgroundWorker没有/ supprort超时。 由于cpu的使用或类似的情况,线程被杀死的可能性更大。
但首先你有一些记录机制吗?这在此类行动中至关重要。
代码是否在try..catch
块内?