2014-04-24 1 views
0

어이 거기에 C#을 처음 사용하고 수동으로 타이머를 실행하고 싶습니다! 그래서 나는 단지 내 코드에서 내가 뭘 잘못하고 있는지 알고 싶다. 난 그냥 내 타이머 안에 간단한 메시지를 표시해야합니다! 내 코드 :주기적으로 값을 변경하려면 타이머를 사용하십시오.

public partial class Form1 : Form 
{ 
    System.Timers.Timer time; 

    public Form1() 
    { 
     InitializeComponent(); 
     time = new System.Timers.Timer(); 
     time.Interval = 10; 
     time.Enabled = true; 
     time.Start(); 
    } 

    private void time_Tick(object e, EventArgs ea) 
    { 
     for (int i = 0; i < 100; i++) 
     { 
      Console.WriteLine(i); 
     } 
    } 
} 

내가 잘못 생각하고 있다면 알려주세요. 미리 감사드립니다!

+1

는 질문을 수정하지 마십시오 :

예를 들어이 당신의 방법이 될 수 있습니다. 원래 질문에 올바르게 대답 한 경우 대답을 올바른 것으로 표시 한 다음 새 질문을 만들거나 의견의 후속 질문을하십시오. – Jite

답변

4

Elapsed 이벤트를 수신하는 것을 잊었습니다. 타이머의 초기화에

time.Elapsed += new ElapsedEventHandler(time_Tick); 

을 그리고 그것은 (순간은 10ms에서) 타이머가 경과 한 콜백 함수도 콜백 함수가 모든 를 호출 할 것이다

주를 호출해야합니다 추가 ms.
실행을 중지하려면 콜백 함수에 time.Stop();을 추가하십시오.

+2

그리고'time.Enabled = true;'호출은 필요하지 않습니다.'time.Start();를 호출하면 타이머 자체가 시작되고 활성화됩니다. – Jite

+0

답변을 사용했지만 일시 중지하고 한 번에 출력을 표시합니다. –

+0

예, 간격을 10 (10 밀리 초)로 설정했습니다. 10 초가 되길 원한다면, 간격은 10000입니다. – Jite

1

편집 :

는 어쩌면 System.Timers.Timer 대신 클래스 System.Windows.Forms.Timer를 사용하는 것이 좋습니다. 거기에서 귀하의 기능을 호출 할 수 있으며 또한 귀하의 텍스트 상자에 액세스 할 수 있습니다.

그렇지 않으면 time_Tick에있는 텍스트 상자 txt에 액세스하여 InvalidOperationException을 수신하게됩니다.

값을 늘리려면 루프를 반복하지 마십시오. i. 타이머를 다시 시작하고 새 값을 설정하십시오. 지금 당신이하고있는 일은 ONE (ticking (lasting 1000 ms))을 대기 한 다음 루프를 시작하는 것입니다. 정답은 더 이상 질문에 적용되지 않도록

using System; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
    private int i = 0; 
    private Timer time; 
    public Form1() 
    { 
     InitializeComponent(); 
     time = new Timer(); 
     time.Tick += time_Tick; 
     time.Interval = 1000; 
     time.Start(); 
    } 

    private void time_Tick(object e, EventArgs ea) 
    { 
     if (i < 100) 
     { 
      txt.Text = i.ToString(); 
      i++; 
      time.Start(); 
     } 

    } 
    } 
} 
+0

time.Tick 오류를 제공합니다! –

+0

어떤 에러가 있습니까? 내가 언급 한 것처럼 사용법을 바꿨 니? –

+0

그것은 나에게 어떤 일시 중지도없이 나가는 것을 보여줍니다. 원하는 것은 i = 1과 같은 1000 간격 후에 for 루프의 출력을 표시 한 다음 i = 2를 일시 중지하고 계속 그렇게하는 것입니다. Java에서와 마찬가지로 수면 방법을 사용할 수 있습니다 –

관련 문제