2009-07-27 4 views
1

저는 타이머가있는 개체를 가지고 있으며 타이머가 5 분에 도달하면 이벤트를 발생시킵니다. 이 경우 MainWindow.xaml.cs에서 MessageBox.Show ("Something")를 호출합니다.WPF MessageBox.Show를 비동기 적으로 호출하십시오.

문제는 내가 MessageBox.Show()를 호출 할 때 사용자가 확인 될 때까지 타이머가 중지된다는 것입니다. 그리고 사용자가 확인을 클릭하지 않아도 계속 타이머가 필요합니다. 이 일을 좋은, 우아한 방법으로 어디에서 할 수 있습니까? 이것은 내가 지금까지 시도했습니다 (하지만 작동하지 않았다) 무엇을 :

 private void OnAlert(object sender, MvpEventArgs e) 
     { 
      this.Dispatcher.Invoke(
       System.Windows.Threading.DispatcherPriority.Normal, 
       new Action(
        delegate() 
        { 
         MessageBox.Show("Alert"); 
        } 
      )); 
     } 

답변

1

어떤 종류의 타이머를 사용하고 있습니까? DispatchTimer를 시도하십시오. 그것이 멈추는 것은별로 의미가 없습니다. 완료된 핸들러에서 .Start()를 다시 호출하지만 DispatchTimer가 자동으로 다시 설정 됨) 명시 적으로해야 할 수도 있습니다.

http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatchertimer.aspx

당신이 DispatchTimer로 얻을 다른 것은 방금 메시지 박스를 호출 ... 명시 적으로 발송 큐에 넣을 필요가 없습니다 그래서, 틱 이벤트가 자동으로 발송 큐에 평가라는 것이다 .자신을 보여. :)

또한 ... 끔찍한 소리를하고 있습니다 ... 나는 MessageBox.Show가 당신의 개념 증명이며 SomethingBetterAndNotSoAnnoyingAndModal.Show()로 대체하려고합니다. 그러나 이것은 아닙니다. 당신의 질문에 도움이됩니다.

0

나는 우아한를 호출하지,하지만 당신은 메시지 박스로 사용하고 "쇼"와 함께 전화를 자신의 창을 만들 수 "ShowDialog"대신.

관련 문제