windows服務中的定時器timer的使用
阿新 • • 發佈:2018-12-29
大家在使用c#寫windows服務時,網上很多例子說,使用工具箱中元件中的定時器就可以,但實際上該定時器並不管用,具體原因,微軟自稱是Framework的bug。
無論是windows窗體中timer還是元件中的timer都是繼承自System.Windows.Form.Timer,並不是我們需要的System.Timers ,繼承自System.Timers 的timer只有手動建立。
publicWindowsServiceDemo() |
{ |
InitializeComponent(); |
System.Timers.Timert=newSystem.Timers.Timer(1000);//例項化Timer類,設定間隔時間為10000毫秒; |
t.Elapsed+=newSystem.Timers.ElapsedEventHandler(TimeElapse);//到達時間的時候執行事件; |
t.AutoReset=true;//設定是執行一次(false)還是一直執行(true); |
t.Enabled=true;//是否執行System.Timers.Timer.Elapsed事件; |
} |
publicvoidTimeElapse(objectsource,System.Timers.ElapsedEventArgse) |
{ |
//EventLoglog=newEventLog(); |
//log.Source="我的應用程式"; |
//log.WriteEntry("1秒呼叫一次", |
FileStreamfs=newFileStream(@"d:/timetick.txt",FileMode.OpenOrCreate,FileAccess.Write); |
StreamWriterm_streamWriter=newStreamWriter(fs); |
m_streamWriter.BaseStream.Seek(0,SeekOrigin.End); |
m_streamWriter.WriteLine("過了一秒"+DateTime.Now.ToString()+"/n"); |
m_streamWriter.Flush(); |
m_streamWriter.Close(); |
fs.Close(); |
} ========================================================================= 該定時器要避免的是 使用類似下面的例子
這兩個例子來自MSDN的網頁。 |