我有一个接口,IDataQuery,当数据加载正在进行并完成时,它有一个事件给 nofity 侦听器。加载是通过 BackgroundWorker 完成的,并在 IDataQuery 的子类中适当地触发。
public interface IDataQuery : IDisposable
{
event EventHandler<DataLoadCompletedEventArgs> LoadCompleted;
event EventHandler<DataLoadProgressEventArgs> LoadProgressChanged;
}
DataLoadCompletedEventArgs 和 DataLoadProgressEventArgs 派生自 EventArgs,并具有与之关联的数据/进度信息。
我目前没有捕获后台线程上可能发生的错误,并且 LoadCompleted EventHandler 被触发,并且我没有检查 RunWorkerCompletedEventArgs 以查看它是否有错误。我想优雅地通知消费者发生了错误。
处理这些后台任务中的错误的最佳设计是什么?我是不是该:
- 将我自己的错误/异常属性添加到 LoadCompleted,并要求消费者检查它
- 有一个新的 EventHandler / EventArgs 专门用于失败案例
- 有 DataLoadCompletedEventArgs 派生自 AsyncCompletedEventArgs (它有一个 Error 属性),并保持捆绑“完成错误”和“成功完成”案例?
- 还有什么?