我正在使用C#编写一个WCF路由器,我想保持运行而不使用Console.ReadKey“hack”。我想知道是否有一种可接受的方式在C#内执行此操作,这比C#更优雅什么是编写C#TSR的可接受方式?
while (true)
Thread.Sleep(100);
我正在使用C#编写一个WCF路由器,我想保持运行而不使用Console.ReadKey“hack”。我想知道是否有一种可接受的方式在C#内执行此操作,这比C#更优雅什么是编写C#TSR的可接受方式?
while (true)
Thread.Sleep(100);
创建一个windows service
项目。与标准的Windows客户端相比,Windows服务具有持久的生命周期。
你可以开始here。
来自msdn:
服务加载后,必须启动它。启动服务允许它开始运作。您可以通过服务控制管理器,服务器资源管理器或通过调用Start方法从代码启动服务。 Start方法将处理传递给应用程序的OnStart方法,并处理您在此定义的任何代码。
A running service can exist in this state indefinitely until it is either stopped or paused or until the computer shuts down.
服务可以存在于三种基本状态之一:运行,暂停或停止。您可以查询状态以确定服务所处的状态。
也许使用ManualResetEvent?
ManualResetEvent stopEvent = new ManualResetEvent(false);
public void StartService()
{
service.Open();
stopEvent.WaitOne()
}
然后,您可以在希望服务终止时执行stopEvent.Set()。
Heh有点困惑。 ManualResetEvent答案是最接近我想要的,我可能会使用它,但Windows服务是我的问题措辞和一般用法的更好答案,因此它获得了接受的打勾。谢谢你们,都很好的答案! – dlanod 2010-06-07 22:47:09