JDP 發表於 2011-1-10 09:48:11

C# 撰寫一個簡單的Windows Service

http://www.dotblogs.com.tw/kirkchen/archive/2010/04/30/14943.aspx

JDP 發表於 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/Forums/zh-TW/233/thread/03f17474-ff77-49a5-9da2-0cd1602707bf

JDP 發表於 2011-1-10 11:19:26

相關文章

回復 JDP 的帖子

我會如何安排一個 C#Windows服務來執行日常任務?
http://zh-tw.w3support.net/index.php?db=so&id=503564
頁: [1]
查看完整版本: C# 撰寫一個簡單的Windows Service