|
樓主 |
發表於 2011-1-10 11:01:10
|
顯示全部樓層
[引用] 撰寫Windows Service較佳的偵錯方式 by programlin
回復 JDP 的帖子
寫Windows Service如果沒有做Unit Test.我建議在撰寫與測試時使用Console Mode,在發布時才將程式轉為Windows Service.
使用Console Mode來Debug程式會很簡單.當然有時候Console Mode可能運作正常而Windows Service才發生問題,這時候就必須使用VS IDE中的Attach to Process功能(在Debug選單中),偵錯Windows Service.
但通常除非必要不會使用這種方式,原則上程式在開發中都使用Console Mode來處理.
作法這邊提供一種做法
建立一個Solution
新增建立一個Console Mode Application
新增建立一個Windows Service Application
新增建立一個Class Library專案,把你的真正程式放在這邊.
Console Mode Application參考使用Class Library專案.
Windows Service Application參考使用Class Library專案.
所以Console Mode Application與Windows Service Application本身幾乎沒有甚麼程式碼.這樣就能隨時使用Console Mode來開發偵錯程式,Windows Service部分用來做部屬時使用.
Class部分之程式碼做法其實很簡單,就是把原來Windows Service的Start() Stop()等程式放到一個新的Class中
譬如
class MyService
{
public void Start()
{
...
}
public void STop();
{
...
}
}
而Windows Service與Console Mode主程式就會很單純如下使用
//Console Mode程式
... Main()
{
MyService service = new MyService();
service.Start();
Console.Read();
service.Stop();
}
//Windows Service程式
class YourWindowsService
{
MyService service = new MyService();
...Start()
{
service.Start();
}
...Stop()
{
service.Stop();
}
}
Reference: http://social.msdn.microsoft.com ... 5-9da2-0cd1602707bf |
|