2013-06-05 61 views
1

在C#中有任何事件像火,忘記每分?火和忘在C#

每分鐘都會觸發此方法。

public void Earning() 
    { 
     var data= new Bussinesslayer().Getdata(); 
    } 
+3

根據你所使用(的WinForms,WPF等。 ),.NET框架中包含了幾個Timer實現,您可以使用它來實現此目的。 – Inisheer

+2

指定上下文無論是WinForms/WPF/ASP.Net等? –

+0

thnx回覆。 – user2454137

回答

8

您可以使用Timer類:
聲明:

System.Timers.Timer _tmr; 

初始化:

_tmr = new System.Timers.Timer(); 

設置:

//Assigning the method that will be called 
_tmr.Elapsed += new System.Timers.ElapsedEventHandler(tmr_Elapsed); 
//Setting the interval (in milliseconds): 
_tmr.Interval = 1000; 

啓動定時器:

_tmr.Start(); 

的功能,將應具有相同的簽名,如下面的例子:

void tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
{ 
    this.Earning(); 
    //please note that here you are in another thread. 
} 

如果你想停止計時器即可使用:

_tmr.Stop(); 
+4

如果你想避免使用額外的方法來調用你的原始方法,你可以通過使用lambda函數來解決這個問題。 '_tmr.Elapsed + =(sender,args)=> this.Earning();' –

0
public void Earning() 
{ 
    var data= new Bussinesslayer().Getdata(); 

    // Wait a minute 
    Task.Delay(TimeSpan.FromMinutes(1)).Wait(); 
    // Re-run this method 
    Task.Factory.StartNew(() => Earning()); 
} 

你需要這些包括:

using System; 
using System.Threading.Tasks; 
1

使用,例如,Rx

Observable.Interval(TimeSpan.FromMinutes(1)) 
      .Subscribe(x => Earning()); 

沒有線程需要

+0

thnx appriciate for answer。 – user2454137