データの読み込みが進行中および完了したときに、nofity リスナーへのイベントを持つインターフェイス IDataQuery があります。ロードは 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 プロパティを持つ) から派生させ、「Completed with error」ケースと「Completed with success」ケースをバンドルしたままにしますか?
- 他の何か?