编写C#TSR的可接受方式是什么?

时间:2010-06-07 05:48:55

标签: c# multithreading

我正在使用C#编写一个WCF路由器,我想继续运行而不使用Console.ReadKey“hack”。我想知道在C#中是否有一种可接受的方法可以比

更优雅
while (true)
    Thread.Sleep(100);

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

也许使用ManualResetEvent?

ManualResetEvent stopEvent = new ManualResetEvent(false);

public void StartService()
{

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

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