【发布时间】:2015-02-20 23:00:04
【问题描述】:
这个post 表示当您在委托上调用BeginInvoke 方法时,总是需要调用EndInvoke 方法。另一个 post 支持它并建议使用 BackgroundWorker 类作为替代方案。
我使用 ILSpy 对 BackgroundWorker 进行了反编译,我发现实际上,EndInvoke 在这个类中从不被调用,即使它确实在委托上使用了 BeginInvoke。 p>
这是否意味着BackgroundWorkder 没有实现,或者调用EndInvoke 根本没有必要?
(异常丢失的问题无关紧要,因为被调用的整个方法都包含在 try-catch 块中)
在类似的问题上:有一个明确的原因为什么在BackgroundWorker 的实现中选择BeginInvoke 而不是ThreadPool.QueueUserWorkItem()?
编辑:BackgroundWorker的源代码可以查看here。
【问题讨论】: