2009-07-30 7 views
0

私はマネージャと呼ばれるクラスのインスタンスを持つWPF GUIを持っています。これは基本的に特定の通信機能とデータ機能を管理しています。低レベルエラーを処理してwpf GUIに伝達するにはどうすればよいですか?

私はマネージャでtry/catchブロックを持っていますが、これをGUIに伝えるベストプラクティスを知りたいと思います。

たとえば、ボタンをクリックするとonClickイベントが生成され、そのコードではManager.DoProcessing()と表示されます。問題は、DoProcessingが爆破されたかどうかを知る方法は?など

enum ErrorType 
{ 
NoError, TimeOut, DBCorrupt 
} 

それともこれは単純化され:私は

エラーを識別するenumErrorType自分を戻すのに十分であろう...別のtryキャッチを持つ関数呼び出しを囲むようにしたくないですか? Managerへの呼び出しには、BackgroundWorker ...

答えて

1

エラーコードは返されません。 C#はそれより優れています。すぐに何かを返す必要があるメソッドがあります。とoutパラメータで作業を開始する必要はありません。 GetPersonが「人」を「取得」できない場合、それは例外的になので、例外をスローする必要があります。

あなたのマネージャクラスはViewModelですか?そうでない場合は、1つにまとめます。あなたのビューモデルはcatch(それが発生したスレッドであれば)例外を表示し、それをビューに提示する責任があります。 1つのオプションは、ErrorMessages(または文字列のObservableCollectionを作成することですが、メッセージ、重大度、発生時間などを含むErrorMessageクラスを作成します)。それで、あなたのXAMLはそれに直接バインドできます。 catchブロックがErrorMessageをコレクションに追加すると、ビューは自動的に更新されます。

BackgroundWorkerを使用している場合は、 'catch'ブロックを使用する代わりに、RunWorkerCompletedイベントで例外をチェックする必要があります。 This documentation explains how.

関連する問題