2014-10-12 40 views
0

我寫了一個窗口服務項目,我想在OnStart()函數中發生一些錯誤時顯示一個錯誤消息,(用throw)然後服務沒有啓動。如何將我的文本顯示爲拋出異常中的錯誤文本?

protected override void OnStart(string[] args) 
{ 
    // do some code ... 

    // when some error occur: 
    throw new System.Exception("my error text!!!"); 
} 

沒關係,服務也沒有啓動。但'我的錯誤文本'不顯示!並且系統顯示自己的錯誤文本(「如果某些服務自動停止...」)

如何在用戶啓動服務和發生錯誤時將我的文本顯示爲錯誤文本?

+0

對於桌面應用程序,你需要寫對話框顯示消息,默認WER對話框不顯示異常消息給用戶。對於Windows服務,它不能/不應該向用戶顯示任何內容。 – kennyzx 2014-10-12 12:08:17

+0

真的!它不能向用戶顯示任何消息。 – nabegheh95 2014-10-12 12:13:56

+0

請參閱這裏的答案http://stackoverflow.com/questions/2786598/show-a-message-box-from-a-windows-service – 2014-10-12 12:14:05

回答

0

你可以嘗試使用User32.dllMessageBox函數來顯示錯誤消息:

private const int MB_SERVICE_NOTIFICATION = 0x00200000; 
private const int MB_ICONERROR = 0x00000010; 

[DllImport("User32", EntryPoint = "MessageBox")] 
private extern static int MsgBox(int hwnd, string lpText, string lpCaption, uint uType); 

protected override void OnStart(string[] args) 
{ 
    // do some code ... 

    // when some error occurred: 
    MsgBox(0, "my error text!!!", "Error", MB_SERVICE_NOTIFICATION | MB_ICONERROR); 
    throw new ApplicationException(); 
} 
+0

不,我試過了,它不起作用! – nabegheh95 2014-10-14 06:02:27