2015-02-14 3 views
1

Как я могу использовать таймер обратного отсчета в моем приложении Windows Phone 8.1? Кажется, для этого нет никакой информации. Все, что я мог бы найти для работы либо Windows Forms приложения или приложения Windows, но ни один из них не кажется, работает на телефоне app.This является то, что я doing-CountDown таймер в Windows Phone

namespace Timer 
{ 
    public partial class MainPage : Page 
    {   
     DispatcherTimer mytimer = new DispatcherTimer(); 
     int currentcount = 0; 
     public MainPage() 
     { 
      InitializeComponent(); 

      mytimer = new DispatcherTimer(); 
      mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0); 
      mytimer.Tick += new EventHandler(mytime_Tick); 
       //HERE error comes Cannot implicitly convert type System.EventHandler to System.EventHandler<object> 
     } 

     private void mytime_Tick(object sender,EventArgs e) 
     { 
      timedisplayBlock.Text = currentcount++.ToString();  
     } 

     private void startButton_Click(object sender, RoutedEventArgs e) 
     { 
      mytimer.Start(); 
     } 
    } 
} 

Но это дает мне это error- Cannot implicitly convert type System.EventHandler to System.EventHandler<object>

+0

Можете ли вы опубликовать код, который, по вашему мнению, будет работать, но не сделал? Может быть, есть экранный снимок того, что работает в приложении Windows? –

+0

использовать DispatcherTimer с таймаутом 1 секунда – thumbmunkeys

+0

@AustinMullins Я отредактировал мой вопрос с моим кодом и ошибкой. – Coder

ответ

1

опечатка обработчики события называют определение обработчика событий должно быть изменение тоже должно быть:

mytimer.Tick += mytime_Tick; // removed the 'r' 
+0

Теперь я получаю эту ошибку-'Cannot неявно преобразовать тип System.EventHandler в System.EventHandler ' – Coder

+0

который ошибка? ... – thumbmunkeys

+0

' Не может неявно преобразовать тип System.EventHandler в System.EventHandler ' – Coder

1

Если не ваша прибавка быть записана в виде

timedisplayBlock.Text = (++currentcount).ToString(); 

Или

currentcount++; 
timedisplayBlock.Text = currentcount.ToString(); 

Я не думаю, что прирост будет иметь значения слишком много, но все равно должны быть написаны правильно, чтобы вы не оставляете себя счетчик позади. - См вопрос Sergiol с ответом Давида на ссылку ниже https://stackoverflow.com/a/7848129/2110465

Другая вещь, которую я заметил, что вы инициализацией DispatcherTimer дважды ...

DispatcherTimer mytimer = new DispatcherTimer(); 
... 
.. 
mytimer = new DispatcherTimer(); 

Это лучшая практика для инициализации на экземпляре для экономии накладных расходов, хотя в зависимости от объема использования. Учитывая, я не в курсе, как остальная часть кода использует его, я предлагаю его можно переписать следующим образом

namespace Timer 
{ 
    public partial class MainPage : Page 
    { 
     DispatcherTimer mytimer = new DispatcherTimer(); 
     int currentcount = 0; 

     public MainPage() 
     { 
      InitializeComponent(); 

      mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0); 
      mytimer.Tick += new EventHandler(mytime_Tick); 
     } 

     private void mytime_Tick(object sender, EventArgs e) 
     { 
      timedisplayBlock.Text = (++currentcount).ToString(); 
     } 

     private void startButton_Click(object sender, RoutedEventArgs e) 
     { 
      mytimer.Start(); 
     } 
    } 
} 

Говоря все выше, я не мог воспроизвести ошибку при репликации ...

EDIT - Это может быть ваш вопрос (https://stackoverflow.com/a/16636862/2110465)

0

Изменить
private void mytimer_Tick(object sender, EventArgs e)
в
private void mytimer_Tick(object sender, object e).

 Смежные вопросы

  • Нет связанных вопросов^_^