【发布时间】:2009-05-31 19:35:03
【问题描述】:
这里有一个新成员。很高兴看到这样一个整洁的社区。p>
经过一番研究,我决定在我的应用程序中使用 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 仍然在处理和处理请求,即使它的主线程(创建它的线程)已经死了?
还有一种更好的方法可以让 ServerThread 保持活动状态然后一段时间(true){Thread.睡眠(100);}?
谢谢。
【问题讨论】:
标签: .net wcf multithreading servicehost