DispatcherTimer
가장 좋은 방법은 처음에 지적한대로으로 지정하면 틱에서 스레드 정렬을 수행 할 필요가 없습니다. 명시 적으로 및/또는 백그라운드 스레드가 필요할 경우 System.Timers.Timer
클래스와 System.Threading.Timer
클래스를 참조하십시오.
단일 클릭과 두 번 클릭을 구분할 수있는 코드 예제는 MSDN (Windows Forms에만 적용되지만 원칙은 동일합니다)에서 확인할 수 있습니다. 또는 this previous question
private static DispatcherTimer clickTimer =
new DispatcherTimer(
TimeSpan.FromMilliseconds(SystemInformation.DoubleClickTime),
DispatcherPriority.Background,
mouseWaitTimer_Tick,
Dispatcher.CurrentDispatcher);
private void Button_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
// Stop the timer from ticking.
myClickWaitTimer.Stop();
Trace.WriteLine("Double Click");
e.Handled = true;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
myClickWaitTimer.Start();
}
private static void mouseWaitTimer_Tick(object sender, EventArgs e)
{
myClickWaitTimer.Stop();
// Handle Single Click Actions
Trace.WriteLine("Single Click");
}
에서 가져온 DispatcherTimer를 사용하여이 예제를 참조하십시오. 스레드가 필요하지 않습니다. – nos
완벽. 에 딱 맞다. 아침 일찍 너무 빨라야 해. 나에게 10 분을 줘. 나는 대답으로 표시 할 것이다. –
정확하게 (코드 샘플없이) 대답 할 내용입니다. – Nuffin