C# 如何重新运行BackgroundWorker
我需要在C# 如何重新运行BackgroundWorker,c#,backgroundworker,C#,Backgroundworker,我需要在DoWork期间捕获错误,如果错误属于某种类型,则重新运行同一个worker。在已完成的事件期间,已尝试取消它并调用RunWorkerAsync(),但没有成功(出现异常,表示我的backgroundworker对象已取消)。我猜Bgw将保持错误/取消状态,直到完成的事件完成 有几个选择: 重新启动DoWork中的逻辑 从已完成的事件启动另一个Bgw Bgw本身并不昂贵,因此重用特定实例没有什么意义。线程来自线程池。在backgroundworker DoWork中处理错误不是更有意
DoWork
期间捕获错误,如果错误属于某种类型,则重新运行同一个worker。在已完成的事件期间,已尝试取消它并调用RunWorkerAsync()
,但没有成功(出现异常,表示我的backgroundworker对象已取消)。我猜Bgw将保持错误/取消状态,直到完成的事件完成
有几个选择:
- 重新启动DoWork中的逻辑
- 从已完成的事件启动另一个Bgw李>
Bgw本身并不昂贵,因此重用特定实例没有什么意义。线程来自线程池。在backgroundworker DoWork中处理错误不是更有意义吗?我会处理它,但它仍会继续完成事件处理程序。。。“可能是去吧?”虚无主义者,现在听起来像是道具内部的控制流问题。捕获异常后完全可以重新启动某些操作。DoWork只是另一种方法。@Henk Holterman,在DoWork事件处理程序中调用DoWork(this,null)?@虚无主义者,至少用DoWork(sender,e)调用它代码>但是它真的不应该是必需的。如果没有代码示例,很难说为什么不需要goto
。没错,它实际上仍然处于取消状态。我不能使用另一个对象来创建bgw,因为正在检查bgw.IsBusy是否正好在该bgw对象上,比如说,按钮单击。所以我认为在DoOrk使用Goto来启动它。谢谢你的回答,我应该在DowWork中调用DowWork吗?(恨goto:)(很遗憾,但我现在无法测试代码,这就是为什么我要问这样的问题:()假设它被称为backgroundWorker1,那么只需执行:backgroundWorker1=new BackgroundWorker();…//附加事件;backgroundWorker1.RunAsync();