web-dev-qa-db-ja.com

Windows Phone 7のタイマーコントロールはありますか?

初めてwinphone 7アプリを作成しようとしています-winformsのタイマーコントロールと同様のタイマーコントロールはありますか?または、そのタイプの機能を取得する方法はありますか?

23
Nils

System.Windows.Threading.DispatcherTimerを使用できます。

System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();
dt.Interval = new TimeSpan(0, 0, 0, 0, 500); // 500 Milliseconds
dt.Tick += new EventHandler(dt_Tick);
dt.Start();

void dt_Tick(object sender, EventArgs e)
{
        // Do Stuff here.
}
46
Jace Rhea

DispatchTimerは、Timerと同様に適切なオプションです。

違いをよく理解し、どちらが自分に適しているかを評価することは価値があります。

利便性(UI更新用のDispatchTimer)または精度(予測可能性用のタイマー)が決定の核心です。

タイマークラス(System.Threading)

DispatcherTimerクラス(System.Windows.Threading)

DispatcherTimerは、すべてのDispatcherTimerループの先頭で再評価されます。

タイマーは、時間間隔が発生したときに正確に実行されるとは限りませんが、時間間隔が発生する前に実行されないことが保証されています。これは、DispatcherTimer操作が他の操作と同様にDispatcherTimerキューに配置されるためです。 DispatcherTimer操作が実行されるタイミングは、キュー内の他のジョブとその優先度によって異なります。

System.Threading.Timerが使用されている場合、タイマーはユーザーインターフェイス(UI)スレッドとは異なるスレッドで実行されることに注意してください。 UIスレッド上のオブジェクトにアクセスするには、Dispatcher.BeginInvokeを使用してUIスレッドのDispatcherTimerに操作を投稿する必要があります。 DispatcherTimerを使用する場合、これは不要です。

7
Mick N