Pregunta

Tengo un objeto que tiene un temporizador y lanza un evento cuando el temporizador llega a 5 minutos. En este evento, llamo a MessageBox.show ("algo") en mi mainwindow.xaml.cs.

El problema es que cuando llamo a MessageBox.Show (), el temporizador se detiene, hasta que el usuario presenta bien. Y necesito que el temporizador continúe incluso si el usuario no ha hecho clic en Aceptar. ¿Es donde es una forma buena y elegante de hacer esto? Esto es lo que he probado hasta ahora (pero no funcionó):

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

Solución

¿Qué tipo de temporizador estás usando? Prueba un despachador. No tiene mucho sentido que se detenga. Es posible que deba ser explícito sobre las cosas (llamar a .Start () nuevamente desde el controlador completado, pero los resultados automáticos de envío).

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

La otra cosa que obtiene con el DispatchTimer es que su evento de tick se evalúa automáticamente en la cola de despacho, por lo que no tiene que ponerlo explícitamente en la cola de envío ... solo llame a MessageBox. Muévase usted mismo. :)

Además ... lo que estás haciendo suena horrible ... Espero que MessageBox. Show es solo tu prueba de concepto y lo reemplazarás con algo BetTerandnotsoSnoying yModal.Show (), pero esto no es útil para tu pregunta, solo Una observación.

Otros consejos

Puede llamar al cuadro de mensaje de manera asincrónica usando BeginInvoke. Hice esto recientemente y escribí en un blog al respecto aquí: http://www.dmcinfo.com/blog.aspx/articletipo/articleview/articleid/163/asynchronous-message-box-in-wpf.aspx. Espero que esto ayude.

No lo llamaría elegante, pero podría construir su propia ventana para usar como cuadro de mensajes y llamarlo con "Show" en lugar de "ShowDialog".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top