2016-07-28 2 views
-6

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"; 
} 
+2

타이머로 처리 할 수 ​​있습니다. – Jite

+2

숙제가 있습니까? – Joe

+0

나는 시도했지만 방법 2에 붙어있다. – user98721351

답변

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; 
    } 
} 

각 틱에서 어떤 메소드가 호출되는지는 사용자의 주석에 명시된 요구 사항을 충족시켜야합니다.

+0

감사합니다. Alooooot, 완료되었습니다. – user98721351

+0

@UmairYaseen : 문제가 해결되면이를 승인 된 답변으로 표시하십시오. –

+0

이것은 표시되었습니다, 다시 고마워요. – user98721351

0

이 해결책으로 문제 중 Thread.sleep를 (2000)인가? 그것은 약간 innacurate 것입니다, 그러나 아마 대부분의 목적을 위해 충분히 좋습니다.

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

메인 UI 스레드를 차단 했으므로 메인 트레드에서 Thread.Sleep을 사용하지 마십시오. 예를 들어 대기 작업 TPL에서 제공 사용 비동기 방식 : 대기에 대한

사용 Task.Delay : 의견에 응답에

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