수색…


통사론

  • myTimer.Interval - "Tick"이벤트가 얼마나 자주 호출되는지 설정합니다 (밀리 초 단위).
  • myTimer.Enabled - 활성화 / 비활성화 할 타이머를 설정하는 부울 값입니다.
  • myTimer.Start() - 타이머를 시작합니다.
  • myTimer.Stop() - 타이머를 중지합니다.

비고

Visual Studio를 사용하는 경우 타이머를 도구 상자의 양식에 직접 컨트롤로 추가 할 수 있습니다.

다중 스레드 타이머

System.Threading.Timer - 가장 간단한 다중 스레드 타이머. 두 개의 메서드와 하나의 생성자가 들어 있습니다.

예 : 타이머는 DataWrite 메서드를 호출합니다.이 메서드는 5 초가 경과하면 "multithread executed ..."를 쓰고 사용자가 Enter 키를 누를 때까지는 매 초마다 1 초마다 다음을 씁니다.

using System;
using System.Threading;
class Program
{
  static void Main()
  {
    // First interval = 5000ms; subsequent intervals = 1000ms
    Timer timer = new Timer (DataWrite, "multithread executed...", 5000, 1000);
    Console.ReadLine();
    timer.Dispose(); // This both stops the timer and cleans up.
  }

  static void DataWrite (object data)
  {
    // This runs on a pooled thread
    Console.WriteLine (data); // Writes "multithread executed..."
  }
}

참고 : 멀티 스레드 타이머를 처리하기위한 별도의 섹션을 게시합니다.

Change -이 메서드는 타이머 간격을 변경하고자 할 때 호출 할 수 있습니다.

Timeout.Infinite - 한 번만 발사하려면. 이것을 생성자의 마지막 인수에 지정하십시오.

System.Timers - .NET Framework에서 제공하는 다른 타이머 클래스입니다. System.Threading.Timer 래핑합니다.

풍모:

  • IComponent - Visual Studio 디자이너의 구성 요소 트레이에 위치하도록 허용
  • Change 메서드 대신 Interval 속성
  • 콜백 delegate 대신 Elapsed event
  • 타이머를 시작하고 중지하는 Enabled 속성 ( default value = false )
  • Enabled 속성 (위의 점)과 혼동을 Enabled 수 있으므로 StartStop 방법
  • AutoReset - 되풀이 이벤트를 나타냅니다 ( default value = true ).
  • WPF 요소 및 Windows Forms 컨트롤에서 안전하게 메서드를 호출하기위한 InvokeBeginInvoke 메서드와 SynchronizingObject 속성

위의 모든 기능을 나타내는 예 :

using System;
using System.Timers; // Timers namespace rather than Threading
class SystemTimer
{
  static void Main()
  {
    Timer timer = new Timer(); // Doesn't require any args
    timer.Interval = 500;
    timer.Elapsed += timer_Elapsed; // Uses an event instead of a delegate
    timer.Start(); // Start the timer
    Console.ReadLine();
    timer.Stop(); // Stop the timer
    Console.ReadLine();
    timer.Start(); // Restart the timer
    Console.ReadLine();
    timer.Dispose(); // Permanently stop the timer
 }

 static void timer_Elapsed(object sender, EventArgs e)
 {
   Console.WriteLine ("Tick");
 }
}

Multithreaded timers - 스레드 풀을 사용하여 여러 스레드가 많은 타이머를 지원할 수 있도록합니다. 즉, 콜백 메소드 또는 Elapsed 이벤트는 호출 될 때마다 다른 스레드에서 트리거 될 수 있습니다.

Elapsed - 이전 Elapsed 이벤트가 실행을 완료했는지 여부에 관계없이이 이벤트는 항상 시간에 따라 실행됩니다. 이 때문에 콜백 또는 이벤트 처리기는 스레드로부터 안전해야합니다. 멀티 스레드 타이머의 정확도는 OS에 따라 다르며 일반적으로 10-20ms입니다.

interop - 더 정확하게 사용해야 할 때이를 사용하고 Windows 멀티미디어 타이머를 호출하십시오. 정확도는 1ms이며 winmm.dll 정의되어 winmm.dll .

timeBeginPeriod - 먼저 타이밍을 요구하는 OS에 알리기 위해이 timeBeginPeriod 호출하십시오.

timeSetEvent - 멀티미디어 타이머를 시작하려면 timeBeginPeriod 다음에 이것을 호출합니다.

timeKillEvent - 완료하면 this를 호출하여 타이머를 중지합니다.

timeEndPeriod - 더 높은 타이밍 정확도가 더 이상 필요 없다는 것을 OS에 알리기 위해 이것을 호출하십시오.

dllimport winmm.dll timesetevent 키워드를 검색하여 멀티미디어 타이머를 사용하는 인터넷의 전체 예제를 찾을 수 있습니다.

타이머 인스턴스 만들기

타이머는 특정 시간 간격으로 작업을 수행하는 데 사용됩니다 (Y 초마다 마). 다음은 타이머의 새 인스턴스를 만드는 예제입니다.

참고 : 이것은 WinForms를 사용하는 타이머에 적용됩니다. WPF를 사용하는 경우 DispatcherTimer 를 살펴볼 수 있습니다.

    using System.Windows.Forms; //Timers use the Windows.Forms namespace

    public partial class Form1 : Form
    {

        Timer myTimer = new Timer(); //create an instance of Timer named myTimer

    
        public Form1()
        {
            InitializeComponent();
        }

    }

"Tick"이벤트 핸들러를 Timer에 할당

타이머에서 수행 된 모든 작업은 "Tick"이벤트에서 처리됩니다.

public partial class Form1 : Form
{

    Timer myTimer = new Timer();

    
    public Form1()
    {
        InitializeComponent();

        myTimer.Tick += myTimer_Tick; //assign the event handler named "myTimer_Tick"
    }

    private void myTimer_Tick(object sender, EventArgs e)
    {
        // Perform your actions here.
    }
}

예 : 타이머를 사용하여 간단한 카운트 다운을 수행합니다.

    public partial class Form1 : Form
    {

    Timer myTimer = new Timer();
    int timeLeft = 10;
    
        public Form1()
        {
            InitializeComponent();

            //set properties for the Timer
            myTimer.Interval = 1000;
            myTimer.Enabled = true;

            //Set the event handler for the timer, named "myTimer_Tick"
            myTimer.Tick += myTimer_Tick;

            //Start the timer as soon as the form is loaded
            myTimer.Start();

            //Show the time set in the "timeLeft" variable
            lblCountDown.Text = timeLeft.ToString();

        }

        private void myTimer_Tick(object sender, EventArgs e)
        {
            //perform these actions at the interval set in the properties.
            lblCountDown.Text = timeLeft.ToString();
            timeLeft -= 1;

            if (timeLeft < 0)
            {
                myTimer.Stop();
            }
        }
    }

결과 ...

여기에 이미지 설명을 입력하십시오. 여기에 이미지 설명을 입력하십시오.

등등...



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow