我想调用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";
}
答案 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);
}