2017-04-26 29 views
0

我在Windows服務中遇到了計時器的奇怪問題。是我的第一個Windows服務,因此,爲了開始學習,我決定創建一個服務,每10秒鐘在一個.txt文件中寫入什麼時間。 我添加了計時器,但看起來像定時器永遠不會啓動。 你能幫我理解我錯在哪裏嗎? 這裏我的代碼:計時器和Windows Serice c#

namespace testtimer 
{ 
    public partial class TestTimer : ServiceBase 
    { 
     public TestTimer() 
     { 
      InitializeComponent(); 
      timer.Interval = 10000; 
      timer.Enabled = true; 
     } 

     protected override void OnStart(string[] args) 
     { 
      timer.Start(); 
     } 

     protected override void OnStop() 
     { 
     } 

     private void timer_Tick(object sender, EventArgs e) 
     { 
      string date = System.DateTime.Now.ToString(); 
      StreamWriter wr = new StreamWriter(@"C:\Users\xxx\Desktop\Test\testtimer.txt", true); 

      wr.WriteLine("\n" + "The Time is:" + "\t" + date); 
      wr.Close(); 
     } 
    } 
} 

在那裏我錯了嗎?

非常感謝您的幫助:)

+2

timer.Tick + = timer_Tick;也許? – linuxrocks

回答

1

猜你使用的是Windows.Forms定時器(組件之一,你拖到你的設計圖面)......這就需要一個「窗口」和「消息循環「以便能夠處理/接收實際的計時器滴答事件。

當你是一個NT服務....你沒有一個窗口......你只是一些代碼,它有SCM(服務控制管理器)調用的入口點。

您需要使用不同類型的使用線程的計時器,並且會回調函數。

+0

非常感謝!這就是爲什麼我在Windows窗體上測試相同的功能,並且在工作和服務中不...謝謝你的時間和你的幫助:).... Patrick –