我有一个监视事件的 B 类(INotifyPropertyChanged 的实现)。它位于接收事件通知的 A 类中。B 类生成的事件通常非常频繁,所以我想:
在线程 ThA 上运行类 A 的代码(不与包含类 B 交互)
在线程 ThB 上运行 B 类的代码,当事件发生时,在通知包含该事件的类 A 之前(通过对 ThA 的调度程序执行调用?),它检查 ThA 没有被 A 类使用. 这样,我会保留它,以便只有 ThA 在 A 内运行,并且还避免来自 B 类的通知压倒 ThA(来自 B 类的信息将“仅当 ThA 有时间时”为 A 类创建事件)。
所以它可能看起来像这样 -
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 没有被用于任何事情”?
谢谢!克里斯