2010-06-07 46 views
3

我正在使用C#编写一个WCF路由器,我想保持运行而不使用Console.ReadKey“hack”。我想知道是否有一种可接受的方式在C#内执行此操作,这比C#更优雅什么是编写C#TSR的可接受方式?

while (true) 
    Thread.Sleep(100); 
+0

Heh有点困惑。 ManualResetEvent答案是最接近我想要的,我可能会使用它,但Windows服务是我的问题措辞和一般用法的更好答案,因此它获得了接受的打勾。谢谢你们,都很好的答案! – dlanod 2010-06-07 22:47:09

回答

7

创建一个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.服务可以存在于三种基本状态之一:运行,暂停或停止。您可以查询状态以确定服务所处的状态。

3

也许使用ManualResetEvent?

ManualResetEvent stopEvent = new ManualResetEvent(false); 

public void StartService() 
{ 

    service.Open(); 
    stopEvent.WaitOne() 
} 

然后,您可以在希望服务终止时执行stopEvent.Set()。

相关问题