.NET 의 Timer 형식 용법 상세 설명
전체적으로 말 하면 타 이 머 는 모두 다음 과 같은 네 가지 가 있다.
다 중 스 레 드 타이머:
1 System.Threading.Timer
2 System.Timers.Timer
특수 환경의 단일 스 레 드 타이머:
1 System.Windows.Forms.Timer(사용 환경:Windows Forms Timer)
2 System.Windows.Threading.DispatcherTimer(사용 환경:WPF timer);
메 인 스 레 드 에서 실행 되 기 때문에 단일 스 레 드 타 이 머 는 안전 합 니 다.Windows Forms 나 WPF 의 컨트롤 값 을 업데이트 하 는 간단 한 작업 에 더욱 편리 합 니 다.예 를 들 어 시계 와 계수 표시.그렇지 않 으 면 다 중 스 레 드 타이머 가 필요 합 니 다.
원리:단일 스 레 드 는 메시지 순환 체 제 를 사용 합 니 다.이것 은 Tick 사건 이 항상 timer 를 만 드 는 그 스 레 드 에서 실 행 된 다 는 것 을 의미 합 니 다.또한 이전 Tick 메시지 가 처리 되 지 않 으 면 시간 이 간격 을 초과 하 더 라 도 메시지 순환 에 하나의 Tick 소모 만 존재 한 다 는 것 을 의미 합 니 다.
예제 코드 는 다음 과 같다.
public static void Main()
{
System.Windows.Forms.Timer tmr = new System.Windows.Forms.Timer();
tmr.Tick += new EventHandler(tmr_Tick);
tmr.Start();//
tmr.Stop();//
tmr.Enabled =true;//
tmr.Interval = 10000; // (10 ), , tmr_Tick 10 .
}
void tmr_Tick(object sender, EventArgs e)
{
//
}
tmrTick 실행 시간 이 길 면 UI 인터페이스 가 멈 춥 니 다.아래 그림 과 같 습 니 다.다 중 스 레 드 타 이 머 는 비교적 강하 고 정확 하 며 확장 성 이 강하 다.다 중 스 레 드 타 이 머 를 사용 할 때 메 인 스 레 드 에 아무런 영향 을 주지 않 고 위의 그림 이 표시 되 는 상황 도 나타 나 지 않 습 니 다.
원리:다 중 스 레 드 타이머 가 리 셋 방법 을 사용 하고 스 레 드 탱크 스 레 드 에서 서 비 스 를 제공 합 니 다.타이머 간격 이 이 리 셋(Tick 방법)을 실행 하 는 데 필요 한 시간 보다 적 을 때 리 셋 은 여러 스 레 드 에서 동시에 실 행 될 수 있 습 니 다.예 를 들 어 타이머 의 시간 간격 이 5 초 이지 만 5 초 가 지나 도 지난번 리 셋 이 완료 되 지 않 았 습 니 다.이 때 새로운 리 셋 은 새로운 스 레 드 에서 실 행 될 것 입 니 다.개발 중 에는 이러한 상황 을 피해 야 합 니 다.
System.Threading.Timer 는 가장 간단 한 다 중 스 레 드 타이머 입 니 다.
System.Threading.Timer 를 사용 하려 면 인용 을 유지 해 야 합 니 다.어떤 위탁 관리 대상 에 대해 서도 타이머 에 대한 인용 이 없 으 면 타 이 머 는 쓰레기 로 회수 된다.타이머 가 여전히 활동 상태 에 있 더 라 도 회수 된다.
아래 의 예 에서 타 이 머 는 5 초 후에 1 초 동안 Tick 방법 을 사용 하기 시작 합 니 다.
public static void Main()
{
int duetime = 5000;
int period = 1000;
System.Threading.Timer timer = new System.Threading.Timer(Tick," Tick ,object ",duetime ,period );
duetime = 10000;
period = 2000;
// 10 2
timer.Change(duetime, period);
//
timer.Dispose();
}
static void Tick(object data)
{
Console.WriteLine(data);
// , , Control.Invoke BeginInvoke , , :
this.BeginInvoke((MethodInvoker)delegate()
{
this.lbl_w.Text = data.ToString ();
});
}
.net framework 가 제공 하 는 또 다른 타이머 System.Timers.Timer.System.Threading.Timer 를 간단하게 포장 하 였 습 니 다.다음 몇 가지 특성 이 추가 되 었 습 니 다:1.Component 를 실 현 했 기 때문에 디자이너 에 표시 할 수 있 습 니 다.
2.변경 방법 대신 Interval 속성 사용
3.Elapsed 이벤트,timer 를 시작 하고 정지 하 는 Start 와 Stop 방법 을 추가 합 니 다.
4.AutoReset 속성 을 기본적으로 True 로 추가 하여 지정 한 간격 이 끝 날 때마다 Elapsed 이 벤트 를 일 으 킬 지,아니면 Elapsed 이 벤트 를 한 번 만 실행 하면 끝 날 지 지정 합 니 다.
예제 코드 는 다음 과 같다.
public static void MainThread()
{
System.Timers.Timer Timer tmr=new System.Timers.Timer();
tmr.Interval=500;
tmr.Elapsed+=newElapsedEventHandler(tmr_Elapsed);
tmr.AutoReset = false;
tmr.Start();
Console.ReadLine();
tmr.Stop();
Console.ReadLine();
tmr.Dispose();
}
void tmr_Elapsed(objectsender,ElapsedEventArgse)
{
Console.WriteLine("Tick...");
}
결론:WPF 와 Windows Forms 의 단일 스 레 드 타 이 머 는 작은 작업,특히 인터페이스 업데이트 작업 에 적합 합 니 다.예 를 들 어 시계 와 계수 표시.
그렇지 않 으 면 다 중 스 레 드 타 이 머 를 사용 할 수 있 습 니 다.어떤 다 중 스 레 드 타 이 머 를 사용 하 는 지 는 자신의 수요 에 따라 결정 할 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 이.net 에서 timer 의 용법 을 파악 하 는 데 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 SQLite를 사용한 Windows Forms 앱 개발Visual Studio 2017에서 SQLite를 사용하여 Windows Forms 앱을 개발해 보았습니다. 아직 서버 탐색기나 TableAdaptor를 사용한 GUI에서의 개발에는 대응하지 않는 것 같습니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.