我正在按照本教程使用Microsoft Visual Studio 2010创建和安装Windows服务: http://msdn.microsoft.com/en-us/library/zt39148a%28v=vs.100%29.aspx
我正在使用3.5 .NET Framework。经过多次尝试,我刚刚从头创建了一个新服务,但这次没有为OnStart()
方法提供方法体。该服务安装成功,但是当我尝试使用服务管理器运行它时,它没有做任何事情,一段时间后Windows告诉我该服务无法运行。
任何形式的帮助都会非常感激。
答案 0 :(得分:1)
启动服务时,系统会调用OnStart()
方法。该方法应尽快返回,因为系统将等待成功返回以指示服务正在运行。在此方法中,您通常会启动将执行服务任务的代码。这可能包括启动线程,启动计时器,打开WCF服务主机,执行异步套接字命令等。
这是一个简单的例子,它启动一个简单执行循环的线程,等待服务停止。
private ManualResetEvent _shutdownEvent;
private Thread _thread;
protected override void OnStart(string[] args)
{
// Uncomment this line to debug the service.
//System.Diagnostics.Debugger.Launch();
// Create the event used to end the thread loop.
_shutdownEvent = new ManualResetEvent(false);
// Create and start the thread.
_thread = new Thread(ThreadFunc);
_thread.Start();
}
protected override void OnStop()
{
// Signal the thread to stop.
_shutdownEvent.Set();
// Wait for the thread to end.
_thread.Join();
}
private void ThreadFunc()
{
// Loop until the service is stopped.
while (!_shutdownEvent.WaitOne(0))
{
// Put your service's execution logic here. For now,
// sleep for one second.
Thread.Sleep(1000);
}
}
如果你已经到了安装服务的地步,那听起来你就好了。对于它的价值,我有从头开始创建服务的逐步说明here以及从命令行安装/卸载服务的后续说明,而不依赖于{{1} } here。
答案 1 :(得分:0)
我终于设法解决了这个问题。显然问题在于Visual Studio安装程序,因为我设法编译项目,然后在管理模式下使用installutil安装服务。