我有一个B类(INotifyPropertyChanged的实现)来监视事件。它位于接收事件通知的A类内部。 B类生成的事件通常可能非常频繁,因此我想:
所以可能看起来像这样-
public class A
{
private B b
private Thread ThA
public A
{
b= new B(ThA);
b.PropertyChanged+=..
}
Event1 callback running on ThA
Event2 callback running on ThA
Callback for b (invoked in ThA)
}
public class B : INotifyPropertyChanged
{
private Thread ThA
private Thread ThB
public B(ThA_)
{
ThA=ThA_;
}
private void EventInClassB_Updated(object sender, Args e)
{
if (ThA is not being used for anything)
{
DispatcherForThreadA.invoke( notifyPropertyChanged() ); //send the callback to class A
}
}
}
有谁知道是否有更聪明的方法来做到这一点,如果没有,我该如何编码“ThA未被用于任何东西”?
谢谢!
克里斯
最佳答案
您可以使用Monitor或Mutex来控制对ThA的访问。只需调用Monitor.TryEnter
即可获得锁。如果TryEnter
失败,则使用ThA。 ThA完成后,请确保调用Monitor.Exit
。
使用Mutex
的代码将是相似的。通常,Monitor
的性能会更好,但不能跨应用程序域边界使用。