2009-04-01 8 views
1

データベースからデータを取得するためにバックグラウンドワーカーを使用しています。私の問題は、データベース活動のエラーを報告するのに苦労していることです。GUIエラー報告

私はDialog(作成したWindowsフォーム)をDatabaseUpdaterクラスから生成しようとしました。しかし、これがハングアップし、エラーメッセージの代わりに白いボックスが残っています。私は別のスレッドでダイアログを生成しようとしました - これは、ダイアログが現れてほとんど瞬時に消えてしまいます。明らかに私はこれに完全には驚きませんでしたが、Dialogを維持しようとすると同じホワイトボックス効果が生じました。

私の質問は本当にスレッド・アクティビティから来るエラーを表示するためのベストプラクティスですか?

答えて

1

、あなたがチェックし、RunWorkerCompletedイベントのハンドラですべてのエラーを表示する必要があります - しようとしないでくださいDoWorkハンドラメソッドでそれらを処理してください...

+0

これはわずかな回避策ですが、完全に正しいとは限りませんが、最後に生成された例外をDatabaseUpdaterクラスに格納しています。 BackgroundWorkerが完了したら、エラーを報告しなければ、保存されたExceptionがnullかどうかをチェックします。 仕事をしているようです! – Bailz

+0

RunWorkerCompletedイベントに渡されたRunWorkerCompletedEventArgsには、例外を含むErrorプロパティが含まれています。 – Lee

2

これは、マルチスレッドとWinFormsのための優れたリソースです:UIスレッドから呼び出された中でのBackgroundWorkerタスクを想定しSynchronizing calls to the UI in a multi-threaded application

+0

私はあなたがここであなたの答えを見つけたことを嬉しく思っています。それはすばらしい記事です! – Dave

0

おそらくあなたが探しているものではありませんが、あなたのメインフォーム上のInvokeRequiredプロパティとInvokeメソッドから多少のマイレージを得るかもしれません。