アクセスを同期するために多くの場所でEventWaitHandleを使用する、かなり優れたマルチスレッドのwinformsアプリがあります。
だから私はこれに似たコードを持っています:
List<int> _revTypes;
EventWaitHandle _ewh = new EventWaitHandle(false, EventResetMode.ManualReset);
void StartBackgroundTask() {
_ewh.Reset();
Thread t = new Thread(new ThreadStart(LoadStuff));
t.Start();
}
void LoadStuff() {
_revTypes = WebServiceCall.GetRevTypes()
// ...bunch of other calls fetching data from all over the place
// using the same pattern
_ewh.Set();
}
List<int> RevTypes {
get {
_ewh.WaitOne();
return _revTypes;
}
}
次に.RevTypes
、UIからsomewehreを呼び出すだけで、LoadStuff
実行が終了するとデータが返されます。
これはすべて完全に正しく機能しますが、これRevTypes
は1つのプロパティにすぎません。実際には、これらは数十個あります。そして、これらのプロパティの1つまたはいくつかは、UIが高速に読み込まれないようにしています。
各プロパティにベンチマークコードを配置する以外に、UIの読み込みを保持しているプロパティを確認する方法はありますか?EventWaitHandleが実際に待機するように強制されているかどうかを確認する方法はありますか?