从BackgroundWorker发布事件 - 委托错误
问题描述:
我有一个接口,IDataQuery在数据加载正在进行并完成时具有nofity侦听器的事件。加载是通过BackgroundWorker完成的,并在IDataQuery的子类中适当地触发。从BackgroundWorker发布事件 - 委托错误
public interface IDataQuery : IDisposable
{
event EventHandler<DataLoadCompletedEventArgs> LoadCompleted;
event EventHandler<DataLoadProgressEventArgs> LoadProgressChanged;
}
DataLoadCompletedEventArgs和DataLoadProgressEventArgs从EventArgs的派生,并有数据/进步与它们相关的信息。
我目前没有捕获可能发生在后台线程上的错误,并且LoadCompleted EventHandler被触发,并且我没有检查RunWorkerCompletedEventArgs以查看它是否有错误。我想优雅地通知消费者发生了错误。
在这些后台任务中处理错误的最佳设计是什么?我应该:
- 我自己的错误/异常属性添加到LoadCompleted,并要求消费者签
- 有失败的情况下
- 有DataLoadCompletedEventArgs从AsyncCompletedEventArgs派生出新的事件处理程序/特别的EventArgs(其有一个错误属性),并保持“完成与错误”和“与成功完成”案件捆绑?
- 还有别的吗?
答
选项3似乎最适合与Microsoft推荐的最佳实践这个模式:
看到这个MSDN页的“错误和异常”部分:
Best Practices for Implementing the Event-based Asynchronous Pattern