設定された間隔でサーバーからファイルを取得するホームWPFアプリケーションを作成しています。MainWindowをTimer.Elapsedイベントに更新する
基本的なウィンドウです。いくつかのラベルが付いています。私は、次の
- 開始時間(アプリが実行されている時間を反映している(日時は、「スタート」イベントが
- 期間を襲った反映)
- スピード(ファイルのダウンロード速度) を持っています
は、私は、メインウィンドウの期間を更新する各二私は(別々のクラス「RunDownloader.cs」で)これを行うには、次のコードを持っている。
private void StartTickTimer()
{
const double interval = 1000;
if (_tickTimer == null)
{
_tickTimer = new Timer
{
Interval = interval
};
_tickTimer.Elapsed += _ticktimer_Elapsed;
}
_tickTimer.Start();
}
On _ticktimer_Elapsedメインウィンドウのメソッドを呼び出します。_mainWindow.UpdateTicker();
これは、以下を実行します。
public void UpdateTicker()
{
var timeStarted = lblTimeStarted.Content.ToString();
DateTime startTime = DateTime.Parse(timeStarted);
TimeSpan span = DateTime.Now.Subtract(startTime);
//ToDo: Output time taken here!
//lblTimeElapsed.Content =
}
私には2つの問題があります。
lblTimeStarted.Content.ToString();を呼び出すときに次の例外があります。 UpdateTicker()
"The calling thread cannot access this object because a different thread owns it."
に私はかなりのTimeSpanからlblTimeElapsed.Contentに正しくすべての答えを事前に
おかげで時間を表示する方法を、知りません。 :D
は、あなたの答えは御馳走を働いた、ありがとうございました。 UIが期待どおりに更新されるようになりました。 –