我有一个相当不错的多线程 winforms 应用程序,它在许多地方使用 EventWaitHandle 来同步访问。
所以我有类似这样的代码:
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;
}
}
然后我只是从 UI 调用somewehre,它会在完成执行 .RevTypes
后将数据返回给我。LoadStuff
所有这些都可以正常工作,但RevTypes
只是一个属性 - 实际上有几十个。这些属性中的一个或几个正在阻止 UI 快速加载。
没有将基准代码放入每个属性中,有没有办法查看哪个属性正在阻止 UI 加载?有没有办法查看 EventWaitHandle 是否被迫实际等待?