"RequestMessage()"という名前の非同期メソッドがあります。この方法では、メッセージブローカーにメッセージを送信します。私は結果をいつ期待するか分からないので、私は "TaskCompletionSource"を使用しています。私は、応答メッセージが到着したときに非同期メソッドを終了させたい(私はブローカからイベントを受け取る)。非同期メソッドのタイムアウト
これまでのところうまくいきます。さて、私の問題は、このメッセージは決して答えられないことです。
自分のタイムアウトを実装するための変更を探しています。そうするために、TimerとReactive ExtensionsのObserverを試しました。 Thの問題は常に同じです - 私は.NET Core 2を使用していて、SynchronizationContextがないので、私はメインスレッドとタイマースレッドを同期させることができません。
時間は、コールバックが呼ばれるべき期限が切れた場合ので、私のコードで..
Observable
.Interval(TimeSpan.FromSeconds(timeOutInSeconds))
.Subscribe(
x =>
{
timeoutCallback();
});
オブザーバーがあります。私の発信者法では、私は、コールバックをこのように扱う:あなたはすでに実現として、それがメインスレッドにスローされないよう
TimeoutDelegate timeoutHandler =() => throw new WorkcenterRepositoryCommunicationException("Broker communication timed out.", null);
、この例外は、catchedされることはありません。
ここでスレッドを同期するにはどうすればよいですか?
ありがとうございます!
どのようにメッセージをブローカーに送信していますか? HttpClient?他に何か? –