문제

타이머가있는 객체가 있고 타이머가 5 분에 도달하면 이벤트가 발생합니다. 이 경우 MainWindow.xaml.cs에서 MessageBox.Show ( "Something")를 호출합니다.

문제는 MessageBox.Show ()를 호출 할 때 사용자가 OK를 누릴 때까지 타이머가 멈추는 것입니다. 그리고 사용자가 확인을 클릭하지 않더라도 계속 진행하려면 타이머가 필요합니다. 이것을하는 것이 좋고 우아한 방법은 어디입니까? 이것이 내가 지금까지 시도한 것입니다 (그러나 작동하지 않았습니다).

        private void OnAlert(object sender, MvpEventArgs e)
        {
            this.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                  delegate()
                  {
                      MessageBox.Show("Alert");
                  }
              ));
        }
도움이 되었습니까?

해결책

어떤 종류의 타이머를 사용하고 있습니까? DispatchTimer를 사용해보십시오. 그것이 멈출 것이라는 의미는 없습니다. 완성 된 핸들러에서 사물을 다시 호출하지만 DispatchTimer Auto Resets에 대해 명시해야 할 수도 있습니다.

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

DispatchTimer와 함께 얻는 또 다른 것은 Tick 이벤트가 Dispatch 큐에서 자동으로 평가되므로 Dispatch 대기열에 명시 적으로 넣을 필요가 없다는 것입니다. MessageBox를 호출하십시오. :)

또한 ... 당신이하고있는 일은 끔찍하게 들립니다 ... 나는 MessageBox를 바라고 있습니다. 쇼는 단지 당신의 개념 증명 일뿐입니다. 관찰.

다른 팁

startinVoke를 사용하여 메시지 상자를 비동기로 호출 할 수 있습니다. 나는 최근에 이것을하고 여기에 블로그를 작성했다. http://www.dmcinfo.com/blog.aspx/articletype/articleview/articleid/163/asynchronous-message-box-in-wpf.aspx. 도움이 되었기를 바랍니다.

나는 그것을 우아하다고 부르지 않지만, 당신은 자신만의 창을 만들어 메시지 상자로 사용하고 "showdialog"대신 "show"로 호출 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top