方法调用时间为2秒

时间:2016-07-28 13:41:23

标签: c#

我想调用2个方法,时间差为2秒,这些方法应该一个接一个地连续调用,这些方法会改变标签文本,我该怎么办呢

这是我试过的计时器:

private void timer1_Tick(object sender, EventArgs e) 
{ //timer interval is set to 2000 
  //also is enabled 
  method1(); 
  method2(); 
 } 
public void method1() 
{ 
  label1.Text = "method1 called"; 
 } 
 public void method2() 
 { 
    label1.Text = "method2 called"; 
 }

3 个答案:

答案 0 :(得分:1)

当你没有阻止主UI线程时,不要在主踏板上使用Thread.Sleep。 使用TPL提供的异步方法进行等待操作,例如:

使用Task.Delay进行等待:

method1();
Task task = Task.Delay(2000)
            .ContinueWith(t => method2());

答案 1 :(得分:1)

根据你在评论中的回答,我认为你希望你的计时器事件处理程序是这样的:

// Declared at class scope
private int whichMethod = 1;

private void timer1_Tick(object sender, EventArgs e)
{
    if (whichMethod == 1)
    {
        method1();
        whichMethod = 2;
    }
    else
    {
        method2();
        whichMethod = 1;
    }
}

这只是替换在每个刻度上调用哪个方法,这应该满足您在评论中所述的要求。

答案 2 :(得分:0)

Thread.Sleep(2000)作为解决方案是不可能的?它会略微疏通,但对于大多数用途来说可能已经足够了。

while(true){ //This will never stop
    method1();
    Thread.Sleep(2000);
    method2();
    Thread.Sleep(2000);
}