私は、スレッドタイマーに私のDispatcherTimer構文を変換する問題を抱えています。私のアプリケーションを突然実行すると、エラーなしでシャットダウンします。System.Threadingタイマー
基本的には、タイマーは5秒ごとに2つの方法を実行します。
編集:2つの方法でUIが更新されています。 私は私がずっとフリーズし、UI表示の遅れを持っているので、DispatcherTimerを取り除くしようとしようとしています。
ディスパッチャタイマーコード:System.Threadingタイマーのための
timerW = new DispatcherTimer();
timerW.Tick += new EventHandler(timerW_Tick);
timerW.Interval = new TimeSpan(0, 0, 5000);
timerW.Start();
private void timerW_Tick(object sender, EventArgs e)
{
DisplayWegingInfo();
CaculateTimen();
}
コード:
public void InitializeDispatcherTimerW()
{
TimerCallback callback = MyTimerCallBack;
timerW = new Timer(callback);
timerW.Change(0, 5000);
}
private void MyTimerCallBack(object state)
{
DisplayWegingInfo();
CaculateTime();
}
感謝。
Debug.Printのように、実行中の2つの関数をコメントアウトし、それらを一時的に無害なものに置き換えます。私がすでにタイマーを2回初期化してしまっていることは少し難解ですが、あなたがすでに示したコードのクラッシュを想像することはできません。 –
私はディスパッチャタイマを取り除こうとしています。なぜなら、ディスパッチャタイマはアプリケーションで多くの遅延を生み出すからです。私がMyTimerCallBackにコメントするとき、アプリケーションはもはやシャットダウンしません。これらの2つのメソッドは、UIを更新しようとします。 – Jackz
['BackgroundWorker'](http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx)がこれにもっと適しているかもしれません。いずれにしても、あなたのタイマースレッドからのUIへの更新は、 'Control.Invoke'を使ってのみ安全に行うことができます。 –