这里有一个新成员。很高兴看到这样一个整洁的社区。
经过一番研究,我决定在我的应用程序中使用 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 保持活动状态一段时间(true){Thread. 睡眠(100);}?
谢谢。