を使用するサードパーティ API と組み合わせて Rx を使用していEventPatternます。StartWatching()この API では、オブジェクトにイベント ハンドラーを登録してから、イベントを開始してトリガーを開始するオブジェクトでメソッド を呼び出します。私はObservable.FromEventPatternRx の世界で 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.CurrentThreadand Scheduler.Immediatewith SubscribeOnandを使用してみましObserveOnたが、役に立ちませんでした。他のアイデアはありますか?別のものを試す必要Schedulerがありますか、それともニシンですか?