我正在使用C#编写一个WCF路由器,我想继续运行而不使用Console.ReadKey“hack”。我想知道在C#中是否有一种可接受的方法可以比
更优雅while (true)
Thread.Sleep(100);
答案 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()。