Windows服务无法启动

时间:2013-12-28 17:42:45

标签: windows visual-studio-2010 .net-3.5 windows-services

我正在按照本教程使用Microsoft Visual Studio 2010创建和安装Windows服务: http://msdn.microsoft.com/en-us/library/zt39148a%28v=vs.100%29.aspx

我正在使用3.5 .NET Framework。经过多次尝试,我刚刚从头创建了一个新服务,但这次没有为OnStart()方法提供方法体。该服务安装成功,但是当我尝试使用服务管理器运行它时,它没有做任何事情,一段时间后Windows告诉我该服务无法运行。

任何形式的帮助都会非常感激。

2 个答案:

答案 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安装服务。