2016-03-19 32 views
2

後立即停止,我寫了窗口服務,您可以在安裝後發現下面Windows服務statring

static void Main() 
    { 
     ServiceBase[] ServicesToRun; 
     ServicesToRun = new ServiceBase[] 
     { 
      new AutoUpgradeServiceDemo() 
     }; 
     ServiceBase.Run(ServicesToRun); 

    } 

//Service class 
    public AutoUpgradeServiceDemo() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     MessageBox.Show("Service Has been Started"); 
     //My logic goes here 
    } 

    protected override void OnStop() 
    { 
     //My logic goes here 
     MessageBox.Show("Service Has been Stopped"); 
    } 

碼,我用手動啓動它。它立即關閉顯示以下錯誤。

enter image description here

誰能幫我...

+0

是它拋出一個異常?你應該放置一些異常處理。另外,請檢查Windows事件日誌;那裏可能有一些有用的信息。 –

+0

是roryap我實現了異常處理和所有的代碼是免費的例外..目前我正在對Windows Server 2008 r2 ...如何檢查事件註冊表..? –

回答

2

的Windows服務沒有用戶界面。所以你不能從服務中顯示消息框。如果你想報告錯誤,標準的方法是使用事件日誌。

protected override void OnStart(string[] args) 
{ 
    base.OnStart(args); 
    //my stuff 
    this.WriteEventLogEntry("My service started successfully", System.Diagnostics.EventLogEntryType.Information); 
} 
0

Windows服務必須在有限的時間內執行OnStart()或者被終止。 幾秒鐘?我不記得了,看看MSDN。 當服務在這種情況下被殺死,沒有太多的信息被報告,也許你也被看門狗殺死了?

如果再啓動需要我通常開始新的線程

protected override void OnStart(string[] args) 
     { 

      MyXxxxxStarter.LogInfo("Try to start thread"); 

      worker = new Thread(WorkerThread); 
      worker.Start(); 

      MyXxxxxStarter.LogInfo("Thread started "); 

     } 

我同意TSu​​ngur,只能通過事件日誌中記錄(在一個地方實現我的代碼)