0

別のメソッドを実行するバックグラウンド ワーカーで例外を返す最もエレガントな方法は何ですか?そのメソッドはバックグラウンド ワーカーの外部でも実行できますか?

たとえば、以下は SomeMethod() がエラーを発生させる非常に単純化された例です。エラーを表示する必要がありますが、バックグラウンド ワーカーにない場合は問題ありませんが、ある時点で表示します。

private void WorkerDoWork(object sender, DoWorkEventArgs e)
{
  getMethod = SomeMethod();
}

private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{

}

private List<SomeVar> SomeMethod()
{

  try
  {
    throw new DivideByZeroException();
  }
  catch (Exception e)
  {
    //Return Exceptions from here to Worker_RunWorkerCompleted
    //Otherwise show message if not in bgw
    var result = ModernDialog.ShowMessage("Error occurred...." + e.Message, "ErrorTitle", MessageBoxButton.OKCancel);
   }
}

このは、DoWork メソッド内でエラーが発生した場合にエラーを返す方法を示していますが、この例での最適な方法についてアドバイスが必要です。

理想的にはSomeMethod()、バックグラウンド ワーカーの内部と外部の両方を呼び出す機能が必要です。

4

2 に答える 2

3

この場合、SomeMethod例外を適切に処理する方法がわからないため、例外をキャッチするべきではありません。泡立つだけです。

たまたま BGW から呼び出された場合、そのワーカーはe.Errorプロパティを取得して参照し、そのケースを適切に処理できます。他の誰かがそれを呼び出した場合、彼らは例外をキャッチして適切に行動できます。

于 2013-11-08T16:17:38.253 に答える