2012-01-31 11 views
11

Estoy tratando de configurar el temporizador en mi aplicación de Windows Store.¿Cómo configuramos los temporizadores en la aplicación WinRT?

public void Start_timer() 
    { 

     Windows.UI.Xaml.DispatcherTimer timer = new DispatcherTimer();   
     timer.Tick += new Windows.UI.Xaml.EventHandler(timer_Tick); 
     timer.Interval = new TimeSpan(00, 1, 1); 
     bool enabled = timer.IsEnabled;    // Enable the timer 
     timer.Start();        // Start the timer  
     } 

Botón Encendido, haga clic en el método anterior para configurar este temporizador. Pero cuando se configura el manejador de eventos para Tick, recibo el error "Intenté leer o escribir en la memoria protegida. Esto a menudo indica que otra memoria está dañada".

¿Necesitamos manejar Temporizadores de forma diferente en las aplicaciones de la Tienda Windows?

+0

¿Qué pasará si hace que el temporizador sea archivado y el temporizador? Marque + = temporizador_Tick; timer.Interval = new TimeSpan (00, 1, 1); mover a contructor También bool enabled = timer.IsEnabled; no tiene ningún efecto, ¿verdad? –

+1

@lukas Disculpe, no obtuvo su primer punto. Podría elaborar – Sap

+2

privado DispatcherTimer timer = new DispatcherTimer(); public YourClass() { timer.Tick + = timer_Tick; timer.Interval = new TimeSpan (00, 1, 1); } –

Respuesta

10

La solución es mover el temporizador del método por ejemplo

private DispatcherTimer timer = new DispatcherTimer(); 

y configurarlo en el ctor

public TheClass() 
{ 
    timer.Tick += timer_Tick; 
    timer.Interval = new TimeSpan(00, 1, 1); 
    timer.Start(); 
} 

Es difícil decir cuál es la razón sin el código completo, pero podría ser el comportamiento del temporizador_Tick.

+0

su desventaja es que se ejecuta en el hilo de UI. Entonces, si el evento del temporizador está ejecutando una tarea que consume tiempo/CPU, la IU se bloquea un bit – Tilak

+0

No si esto se hace de manera sincronizada :) – 70sCommander

Cuestiones relacionadas