を使用するサードパーティ API と組み合わせて Rx を使用していEventPattern
ます。StartWatching()
この API では、オブジェクトにイベント ハンドラーを登録してから、イベントを開始してトリガーを開始するオブジェクトでメソッド を呼び出します。私はObservable.FromEventPattern
Rx の世界で API をブリッジするために使用していますが、サブスクリプションが の呼び出しによって正しく呼び出された場合にのみ機能するという非常に奇妙な問題に遭遇していますStartWatching()
。以下は、私が見ているものの縮小されたケースです。
これは機能します:
foreach (var iq in interactionQueues)
{
Observable.FromEventPattern(iq, "TheEvent")
.Subscribe(e => Log.Info("I got called!"),
e => Log.Info("Error!", e),
() => Console.WriteLine("Seq completed!"));
iq.StartWatching();
}
Subscribe()
andStartWatching()
を別のループで呼び出すと、動作が停止します。
foreach (var iq in interactionQueues)
Observable.FromEventPattern(iq, "TheEvent")
.Subscribe(e => Log.Info("I got called!"),
e => Log.Info("Error!", e),
() => Console.WriteLine("Seq completed!"));
foreach (var iq in interactionQueues)
iq.StartWatching();
なぜこれが起こるのかについての私の唯一の考えは、観察または購読が間違ったスレッドで起こっているということです. Scheduler.CurrentThread
and Scheduler.Immediate
with SubscribeOn
andを使用してみましObserveOn
たが、役に立ちませんでした。他のアイデアはありますか?別のものを試す必要Scheduler
がありますか、それともニシンですか?