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