構成された間隔でサーバーからファイルを取得するホーム WPF アプリを作成しています。
これは基本的なウィンドウで、いくつかのラベルがあります。私は次のものを持っています
- 開始時刻 (「開始」イベントが発生した DateTime を反映します)
- 期間 (アプリの実行時間を反映)
- 速度 (ファイルのダウンロード速度)
メインウィンドウの期間を毎秒更新したいので、これを行うための次のコードがあります(別のクラス「RunDownloader.cs」内)。
private void StartTickTimer()
{
const double interval = 1000;
if (_tickTimer == null)
{
_tickTimer = new Timer
{
Interval = interval
};
_tickTimer.Elapsed += _ticktimer_Elapsed;
}
_tickTimer.Start();
}
_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