2011-09-22 130 views
0

我有一個.Net控制檯應用程序,每分鐘在控制檯上顯示數千行。我想將其轉換爲Windows服務,但是我仍然需要查看這些消息的方法。有太多的消息將它們寫入事件日誌甚至標準的日誌文件。我想知道是否有辦法編寫一個可以簡單地從服務中攔截這些消息並將它們顯示在控制檯窗口中的systray應用程序。我不需要保存較舊的消息,我只需要查看當前的活動。VB .Net Windows服務控制檯消息

回答

0

該服務將需要寫入共享內存某些排序爲了與另一個顯示輸出的程序進行通信。我認爲你最好的選擇是輸出到一個SQL表或其他東西,並清除舊的條目,這樣一次只能有1000條記錄。然後在查看器應用程序中每秒查看錶幾次,並顯示輸出的流式視圖。

0

聽起來像System.Diagnostics.Trace類型將是完美的。分兩個階段實施您的更改:

對於階段1,您將ConsoleTraceListener添加到您的應用程序,並將當前的所有調用轉換爲控制檯以寫入到Trace。這隻會保持您現有的行爲,但它會讓您輕鬆地對新輸出進行更改。

對於階段2,您實現了一個新的TraceListener,您可以附加而不是ConsoleTraceListener,它可以根據消息執行任何您想要的操作。這可能包括監聽您建議的系統托盤或控制檯應用程序的連接。更好的是,我敢打賭,一些谷歌搜索會告訴你一個TraceListener已經做到了你想要的。

至於通訊的實際機制,我的建議是使用標準的SysLog的方法。這具有爲客戶端工作現有軟件的優勢,使您更有可能找到existing TraceListener,許多現有的系統日誌客戶端將帶來一些自動數據挖掘作爲獎勵。