私のwp7.5アプリでは、ストップクロックを表示する必要があるブロックがあります(たとえば、30,29,28 ... 1,0)。DispatchTimerクラスとTimerクラスを使用してこれを実現するためにさまざまな実装を試しましたが、いずれも問題を解決しませんでした。
アプローチ1:これがDispatchTimerに使用したスニペットです。
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = new TimeSpan(0, 0, 1); // 1 second
dt.Tick += new EventHandler(dt_Tick);
for(int count=0;count<30;count++)
dt.Start();
void dt_Tick(object sender, EventArgs e)
{
// my UI control update here
}
Tickイベントの実装では、タイムカウンターを使用してUIコントロールを更新しています。同じトピックに関するいくつかの質問をここで読みました。UIスレッドが原因で、一部のシナリオでディスパッチャティックが起動しない場合があります。それは私にも同じように起こりました、ダニイベントは決して発火しませんでした。
アプローチ2:System.Threading.Timerクラスを使用してみました。
Timer timer = new Timer(TimerProc);
for(int count=0;count<30;count++)
timer.Change(1000, 0);
void TimerProc(object sender)
{
// my UI control update here
}
私のアプローチはうまくいきませんでした。繰り返し質問するかもしれませんが、コードのどこで間違っているのか誰かに教えてもらえますか?