2009-12-29 8 views
0

각 _Tick에 메소드를 호출하는 세 개의 별도 타이머가 있습니다. 나는 그 세 번을 중지 할타이머와 폼이 닫히지 않았을 때

if ((x < y) || (x > z)) 
{ 

} 

이 문 내에서 : 의도 한대로이 방법은 잘 작동하지만 그 안에 두 값이 숫자보다 하나 < 또는>가 있는지 확인 if 문이다 , 메시지 상자를 보여주고 양식을 폐기하십시오. 이것은 내가 사용하고있는 코드입니다 :

if ((x < yArray[0]) || (x > yArray[1])) 
{ 
    frmFooBar barFoo = new frmFooBar(); 
    barFoo.tmrOne.Stop(); 
    barFoo.tmrTwo.Stop(); 
    barFoo.tmrThree.Stop(); 
    MessageBox.Show(GlobalVariables.aVariable+ " is dead."); 
    barFoo.Dispose(); 
} 

두 조건 중 하나가 참일 때마다 조건문이 올바르게 작동하므로 매틱마다 MessageBox 팝업이 표시됩니다. 내가 가지고있는 문제는 이러한 형식 함수 중 어느 것도 작동하지 않는다는 것입니다. tmrOne, 두 개가 계속 실행 중이며 양식이 닫히지 않습니다.

저는 아직 C#에 익숙하지 않으므로 아마도 내 문제는 분명하지만 도움이 될 것입니다! 고맙습니다.

답변

3

당신은 당신의 방법으로이 일을하고 있습니다 :

frmFooBar barFoo = new frmFooBar(); 
barFoo.tmrOne.Stop(); 
barFoo.tmrTwo.Stop(); 

이 frmFooBar의 새로운 인스턴스를 생성하고 이미 실행중인 인스턴스에 영향을주지 않습니다. '당신에게,

this.tmrOne.Stop(); 
this.tmrTwo.Stop(); 

그 방법 :이 양식에 타이머의 틱 이벤트 내에서 일어나는 경우

, 당신은 현재 실행중인 양식되기 때문에, "이"을 사용하는 것이 좋습니다 현재 실행중인 양식에서 타이머를 다시 중지합니다.

+0

이것은 완벽하게 작동하고 작동합니다! 고맙습니다! – BlindMatoya

0

to 사용할 양식을 닫습니다. form.Close(); this.Close();를 사용할 수 있습니다. 타이머를 멈추려면 양식을 닫으려면 Timer.Enabled = false;를 사용하십시오. 호프 도움이 Amit

+0

오, 글로벌 동사를 사용하고 계신가요? 그 이유는 타이머가있는 폼을이 메소드를 호출하는 폼에 전달해야하기 때문입니다. – Mazki516

+0

이 아니라면 'FormName'. Timer.Stop()없이 타이머 및 닫기 메소드를 직접 호출하면됩니다. – Mazki516

관련 문제