从BackgroundWorker发布事件 - 委托错误

问题描述:

我有一个接口,IDataQuery在数据加载正在进行并完成时具有nofity侦听器的事件。加载是通过BackgroundWorker完成的,并在IDataQuery的子类中适当地触发。从BackgroundWorker发布事件 - 委托错误

public interface IDataQuery : IDisposable 
{ 
    event EventHandler<DataLoadCompletedEventArgs> LoadCompleted; 
    event EventHandler<DataLoadProgressEventArgs> LoadProgressChanged; 
} 

DataLoadCompletedEventArgs和DataLoadProgressEventArgs从EventArgs的派生,并有数据/进步与它们相关的信息。

我目前没有捕获可能发生在后台线程上的错误,并且LoadCompleted EventHandler被触发,并且我没有检查RunWorkerCompletedEventArgs以查看它是否有错误。我想优雅地通知消费者发生了错误。

在这些后台任务中处理错误的最佳设计是什么?我应该:

  1. 我自己的错误/异常属性添加到LoadCompleted,并要求消费者签
  2. 有失败的情况下
  3. 有DataLoadCompletedEventArgs从AsyncCompletedEventArgs派生出新的事件处理程序/特别的EventArgs(其有一个错误属性),并保持“完成与错误”和“与成功完成”案件捆绑?
  4. 还有别的吗?

选项3似乎最适合与Microsoft推荐的最佳实践这个模式:

看到这个MSDN页的“错误和异常”部分:

Best Practices for Implementing the Event-based Asynchronous Pattern