我已經編寫了一個Windows服務,它定期執行一個SSIS包,將文件從Server A
移動到Server B
。由於OnStart()方法中的無限循環,Windows服務始終「啓動」
的問題是,爲了做到這一點,我需要用一個無限循環,在服務啓動時啓動。
當然,我置於該環路進入OnStart()
方法。不幸的是,服務永遠不會發出信號,它已經開始,因爲它從來沒有達到這個方法結束...
下面是相關代碼:
protected override void OnStart(string[] args)
{
Application app = new Application();
Package pkg = app.LoadFromDtsServer(@"MSDB\PullDoc", "Server", null);
while (true)
{
DTSExecResult pkgResults = pkg.Execute();//Execute the package.
EventLog.WriteEntry(pkgResults.ToString());
Thread.Sleep(1000 * 60 * 5);//Sleep at least five minutes.
}
}
我會想象這是一個普遍的問題,給出大多數服務應該無限期地運行。
有關如何讓此服務返回已啓動的任何想法?
謝謝!
相關問題:當我使用計時器時,即使方法尚未執行完畢,它也會每5分鐘調用我的回調方法。有沒有一種簡單的方法,使其不計數直到方法結束? – nosirrahcd 2011-01-05 20:23:02
@user:將計時器設置爲只運行一次,然後在方法結束時重新啓動計時器。 – SLaks 2011-01-05 20:24:40