2013-03-05 38 views
1

我正在使用Topshelf v3.1將我的控制檯應用程序安裝爲Windows服務。我通過命令行安裝我的控制檯,如:myconsole installTopshelf安裝命令不返回

除了命令似乎從未完成,一切看起來都不錯,我的意思是通常一旦命令執行完畢,命令行控制檯就會回到您可以鍵入其他命令的狀態再次。不知何故,topshelf命令停在最後一點,所以我必須控制+ C殺死命令。

我的代碼是下面:

class Program 
    { 
     static void Main(string[] args) 
     { 
      //HostFactory.Run(x => 
      //{ 
      // x.Service<DummyService>(s => 
      // { 
      //  s.ConstructUsing(name => new DummyService()); 
      //  s.WhenStarted(tc => { }); 
      //  s.WhenStopped(tc => { }); 
      // }); 

      // x.RunAsLocalSystem(); 
      // x.SetDescription("DummyService1"); 
      // x.SetDisplayName("DummyService2"); 
      // x.SetServiceName("DummyService3"); 
      // x.StartAutomatically(); 
      //}); 
      var service = new DummyService(); 
      service.Run();    
     } 
} 

不知何故,如果我去掉了,我上面註釋的塊和註釋的最後兩行中的主要方法。然後我再次運行命令,它神奇地工作。

PS:DummyService.Run方法只包裝註釋的代碼塊。基本上,它們是一樣的。

任何想法?

乾杯, Ld的

回答

1

Topshelf是正在運行的服務。這是預期的行爲。隨着Windows服務的正常運行,該服務需要連續運行(直到發送停止命令爲止)。在命令行中,您需要按CTRL + C來指示服務的結束。

如果你只想運行一個命令,Topshelf是錯誤的方法。 Topshelf允許您通過命令行方式正常運行該服務,作爲調試服務的簡單方法。