[問題] Windows Service中timer的暫停設定
小弟設計了一個視窗服務應用程式,用以常駐於電腦。
以下是部份程式碼。
namespace WS
{
public partial class Service1 : ServiceBase
{
public Service1()
{ InitializeComponent(); }
protected override void OnStart(string[] args)
{}
protected override void OnStop()
{}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
timer1.Enabled = false;//進入事件處理程序,時間暫停
該程序()
{首先偵測電腦內某個資料夾是否有其它人上傳的數據資料,
如有,則開始演算工作。
如沒有,則結束本次服務。}
timer1.Enabled = true;//處理事件完畢,時間繼續
}
}
}
我將時間間隔(timer.interval)設定為10秒,
也就是希望電腦能每隔十秒偵測一次該資料夾是否有人上傳,
而我所設計的程序,由於內含大量資料(數千萬筆)的拷貝工作,
正常情況下至少要5分鐘,
為了不使5分鐘內連續執行了(30次),在進入程序時,
我特意將timer.Enabled關閉,待執行完畢後再開啟。
但程式並不如我想像的方式進行,這樣的寫法,總共只會執行一次,
往後再有人上傳資料,該服務也不會動作了,
debug了很久,始終找不到問題,
是否 timer.Enabled=true 該行放的位置有錯?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.61.67
※ 編輯: Eleganse 來自: 140.115.61.67 (11/17 17:03)
推
11/17 21:12, , 1F
11/17 21:12, 1F
→
11/17 21:14, , 2F
11/17 21:14, 2F
推
11/18 10:00, , 3F
11/18 10:00, 3F
→
11/18 12:21, , 4F
11/18 12:21, 4F
→
11/18 12:22, , 5F
11/18 12:22, 5F
→
11/18 12:23, , 6F
11/18 12:23, 6F
→
11/18 12:23, , 7F
11/18 12:23, 7F