我正在制作一个基本的自托管WCF服务,我只是想知道最好的方法是让它等待接受请求吗?我找到的所有基本教程都只使用Console.ReadLine来等待用户按Enter键退出.对于实际应用来说,这似乎不太实用.我试了一会儿(真的); 循环,但这消耗了所有可用的CPU周期,因此它不是一个选项.我也试过Thread.Sleep(0),但服务在睡觉时不接受请求,所以这也行不通.我确信有一些常见的方法让你的程序"停顿"等待WCF请求; 谁知道怎么样?
我正在使用C#,.NET 3.5 sp1.
如果你在一个单独的线程中运行它(因为它自己托管),一个简单的选择是使用ManualResetEvent.
只需调用manualResetEvent.WaitOne();WCF线程即可.这将阻止(如Console.ReadLine),直到manualResetEvent.Set()从单独的线程调用.
这里的好处是你可以有一个干净的机制来关闭服务.
如果没有UI,真正的应用程序可能会更好地作为Windows服务.您可以在服务的OnStart方法中设置WCF服务主机,然后在OnStop中将其拆除.
这些示例通常使用控制台应用程序的原因是因为它很容易演示,而不会让读者混淆不相关的代码来安装和运行服务.但是,如果您的服务器不具备交互式UI,我建议您调查Windows服务项目模板.
| 归档时间: |
|
| 查看次数: |
2043 次 |
| 最近记录: |