2013-12-09 33 views
0

請看看這段代碼在窗口服務的C#中開始調用方法

public partial class TestService : ServiceBase 
{ 
    private static System.Timers.Timer aTimer; 

    protected override void OnStart(string[] args) 
    { 
     aTimer = new Timer(10000 * 6 * 5); // 5 minutes interval 
     aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
     aTimer.Enabled = true; 
    } 

    private void OnTimedEvent(object source, ElapsedEventArgs e) 
    { 
     ...... 
    } 
} 

當我說下午4:00啓動此服務,在第一時間OnTimedEvent被稱爲是在4:05下午4點10分,等等。我希望在我開始服務後的下午4點之後致電OnTimedEvent。有什麼我在這裏失蹤?

+0

如果下面的答案不是你要找的,請描述爲什麼。 –

回答

0

你可以只調用事件中的OnStart

OnTimedEvent(this, null) 
0

System.Timers.Timer開始從5分鐘開始遞減計數,然後該事件被觸發。因此,這將無法觸發並直到計時器到達0

啓用了事件偵聽器之前,該代碼可以運行運行的代碼如下所示這樣:

public partial class TestService : ServiceBase 
 
{ 
 
    private static System.Timers.Timer aTimer; 
 

 
    protected override void OnStart(string[] args) 
 
    { 
 
     aTimer = new Timer(10000 * 6 * 5); // 5 minutes interval 
 
     aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
 
     
 
     foo(); 
 
     aTimer.Enabled = true; 
 
    } 
 

 
    private void OnTimedEvent(object source, ElapsedEventArgs e) 
 
    { 
 
     foo(); 
 
    } 
 

 
    private void foo(){ 
 
     ..... 
 
    } 
 
}