ここに新しいメンバー。このようなきちんとしたコミュニティを見ることができてうれしいです。
少し調査した後、アプリケーションで WCF を使用してプロセス間通信を行うことにしたので、NetNamedPipeBinding バインディングを使用しています。
ServiceHost ホスティング アプリケーションは専用サーバーではないため、スレッドを介して ServiceHost を生成する必要があります。ここまでは順調ですね。
だから私は次のようなものを持っています:
Foo()
{
Thread serverThread = new Thread(new ThreadStart(ServerThread));
serverThread.Start();
Console.WriteLine("Foo Exited");
}
ServerThread()
{
Uri baseAddress = new Uri("net.pipe://localhost/service");
ServiceHost serviceHost = new ServiceHost(typeof(MyService), baseAddress);
...
serviceHost.Open();
Console.WriteLine("Server Thread Exited");
}
予想通り、次のように表示されます。
-> Server Thread Exited
-> Foo Exited
しかし驚いたことに、サーバーが実行されているスレッドが興奮していても、クライアントは引き続き serviceHost に接続でき、サービス ホストはリクエストを適切に処理します。
では、メイン スレッド (作成されたスレッド) が停止しているにもかかわらず、ServiceHost がまだリクエストを処理および処理しているのはなぜでしょうか?
また、ServerThread を存続させ、while(true){Thread. スリープ(100);}?
ありがとう。