我正在編寫一個家庭WPF應用程序,它以配置的間隔從服務器獲取文件。更新Timer.Elapsed事件中的MainWindow
這是一個基本的窗口,有幾個標籤。我有以下
- 開始時間(反映的DateTime「開始」事件被擊中
- 持續時間(反映應用程序已經運行的時間)
- 速度(該文件的下載速度)
我想要更新的主窗口上持續時間各第二,所以我有下面的代碼來做到這一點(在一個單獨的類「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 =
}
我有兩個問題。
我在調用lblTimeStarted.Content.ToString()時發生以下異常:在UpdateTicker()
"The calling thread cannot access this object because a different thread owns it."
我不很清楚,如何從時間跨度正確顯示持續時間lblTimeElapsed.Content
感謝您事先的任何答案。 :D
謝謝你的回答工作一種享受。 UI正在按預期更新。 – 2012-04-22 13:11:15