0

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

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

DataLoadCompletedEventArgs 和 DataLoadProgressEventArgs 派生自 EventArgs,并具有与之关联的数据/进度信息。

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

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

  1. 将我自己的错误/异常属性添加到 LoadCompleted,并要求消费者检查它
  2. 有一个新的 EventHandler / EventArgs 专门用于失败案例
  3. 有 DataLoadCompletedEventArgs 派生自 AsyncCompletedEventArgs (它有一个 Error 属性),并保持捆绑“完成错误”和“成功完成”案例?
  4. 还有什么?
4

1 回答 1

0

选项 3 似乎最适合微软为此模式推荐的最佳实践:

请参阅此 MSDN 页面的“错误和异常”部分:

实现基于事件的异步模式的最佳实践

于 2012-07-11T19:03:46.620 回答