イベントを監視するクラス 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は何にも使用されていません」
ありがとう!クリス