2011-09-21 75 views
1

我正在使用Windows服務使用C#。我想在Console中輸出console.WriteLine(「Hello」)。我無法獲得,而我能夠成功寫它做一個事件日誌條目。VS.Net 2008中的Windows服務中的控制檯輸出

eventLog1.WriteEntry("In OnStart"); 
     try 
     { 
      Console.WriteLine("Hello");   
      DBSyncHandler sync = new DBSyncHandler(); 
      sync.startSync(); 

     } 

所以說我不能檢查它是否寫入控制檯並執行下面提到的代碼。

+0

如果您正在編寫的服務沒有控制檯,請改用事件日誌。 – 2011-09-21 10:46:48

+0

嗨喬恩。謝謝。但是我怎麼才能知道代碼是否已經被執行了......你是否需要將它寫入到事件日誌中的每一個早期控制檯所在的位置。在創建實例時,在DbSyncHandler類中,是使用控制檯顯示的階段。您的意思是我需要使用EventLog來檢查在DBSyncHandler中執行了多少代碼。 –

回答

5

你可能是指Debug.WriteLine對不對?如果是這樣,使用Sysinternals的debug viewer觀看任何應用程序(包括服務)發送的每調試消息

編輯:循序漸進

  1. 更換Console.WriteLine通過Debug.WriteLine
  2. 下載debug viewer
  3. 運行調試查看器並啓動您的服務
  4. 調試查看器會顯示每條發送到調試的消息。 (你可以過濾只看到什麼是你)
  5. 瞧!
+0

你可否詳細說一下。我需要知道如何DBSyncHandler sync = new DBSyncHandler(); sync.startSync(); 正在執行與否。 –

+0

這對我來說不起作用 – Sinaesthetic

0

在Windows服務中沒有可用的控制檯窗口;我會用會選擇使用一個日誌框架(如log4net的)輸出語句到日誌文件

0

爲了看看在Windows服務控制檯輸出,您需要設置與您的服務「允許與桌面交互的服務「

Control Panel --> Admin Tools --> Services --> select yours --> (right-click) Properties --> Logon Tab --> Tick "Allow service to interact with Desktop" 
+0

然後呢? – developer82

+0

@ developer82,然後您的服務上的任何「Console.WriteLine」語句將顯示在典型的DOS提示符下。 – Icarus

+0

如何將DOS提示符附加到服務?謝謝 – developer82