最近項目需要3方狀態同步,就是PDM、CAD、還有一個即時通訊的工具,因為這些東西都不是一種語言開發的。所以怎麼做到這點有些麻煩。以資料庫為基礎是肯定的了,那怎麼才能完成這個監控呢,我先設計監控系統進程,加上資料庫判斷,可是這樣做會給軟體造成效能的影響。於是想到使用系統服務來完成這個中轉。當然只是設想,能不能完成還是未知數。
開啟C#項目,找到了windows服務項目,建立一個進去。設計介面是組件的形式。切入進程式碼檢視:哇,都給寫好了:
系統給好的3個函數:Main,Start,Stop
簡單的寫個測試的函數:
private void WriteLog(string content)
{
string fPath=@"d:\Windows服務\log.txt";
StreamWriter sWriter=null;
if(!File.Exists(fPath))
File.Create(fPath);
try
{
sWriter=new StreamWriter(fPath,true);
sWriter.WriteLine(content);
}
catch(System.Exception err)
{
throw new Exception("服務寫入錯誤",err);
}
finally
{
sWriter.Close();
}
}
在start函數中加入他,產生。執行————〉提示不能直接執行。需要Installer。
沒辦法,去網上查了下。
原來在組件介面右擊——〉添加安裝項目,ok
按照網上的設定好屬性:
設定serviceInstaller1組件的屬性:
1) ServiceName = My Sample Service
2) StartType = Automatic
設定serviceProcessInstaller1組件的屬性
1) Account = LocalSystem
產生,用InstallUtil.exe註冊一下。在.net命令提示字元下輸入InstallUtil 服務名.exe
提示註冊成功。
在服務管理中找到剛剛註冊的服務啟動。
回d:\Windows服務\log.txt 察看
果然添加了“服務啟動...”的資訊。
哈哈,第一次嘗試windows服務,不知道能不能在實際中起到應有的作用。