2012-01-31 16 views
11

Windows Store Uygulamamda Timer'ı ayarlamaya çalışıyorum.Zamanlayıcıları WinRT uygulamasında nasıl ayarlayabiliriz?

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  
     } 

Bu Zamanlayıcıyı ayarlamak için, yukarıdaki tuşa basın. Ancak Tick için Eventhandler ayarlandığında, hatası alıyorum "Korumalı bellek okuma veya yazma girişimi. Bu genellikle diğer bellek bozuk bir göstergesidir."

Windows Mağazası uygulamalarında Timer'ları farklı işlemek zorunda mıyız?

+0

Zamanlanmış bir dosya oluşturursanız ne olur ve timer.Tick + = timer_Tick; timer.Interval = yeni TimeSpan (00, 1, 1); çalışana geç. Ayrıca bool etkin = timer.IsEnabled; etkisi yok, değil mi? –

+1

@lukas Üzgünüz, ilk noktanızı alamadı.Özellikle – Sap

+2

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

cevap

10

çözümü,

private DispatcherTimer timer = new DispatcherTimer(); 

yöntem örneğin dışına Timer taşımak ve tam kod olmadan nedenin ne anlatmak

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

Sert ctor bunu kurmaktır ama Bu, timer_Tick'in davranışı olabilir.

+0

onun dezavantajı, UI iş parçacığı üzerinde çalışmasıdır. Zamanlayıcı olay zaman/cpu tüketen bir görev yürütüyorsa, UI bir bit – Tilak

+0

askıda kalıyorsa, bu uyuşmaz ise :) – 70sCommander

İlgili konular