0

私の場合は、バインディングとして wsDualHttpBinding を使用しています。

しかし、私はある種の予期せぬことに気付きました。サービス操作にリクエストを送信しようとしたときに、コードがコールバック メッセージを処理している (シミュレートするために Thread.Sleep をそこに置いた) 場合、サービス呼び出しはコールバックまでスタックします (さらにはタイムアウトになることもあります)。メッセージは完全に処理されます。それらは独立しているべきではありませんか、またはチャネルは一度に 1 つのメッセージしか処理できず、それがサービス要求であるかコールバック メッセージであるかは問題ではありませんか? コールバック メッセージを受信するか、新しいリクエストを送信するために、常に同じチャネルを使用しています。このアプリケーションはサービスとして実行されるため、関連する UI はありません。

4

1 に答える 1

0

試す

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]

シングルスレッド構成でコールバックをサポートする特別なモードです。

http://msdn.microsoft.com/en-us/library/system.servicemodel.concurrencymode.aspx

于 2012-10-13T02:50:28.863 に答える