在一個移動設備(Windows Mobile)的程序中,我使用緊湊框架3.5, 我下載一個文件並希望通過在Windows中顯示它來監視進度.Forms.Label。緊湊框架:更新線程中的標籤不工作
這裏我的代碼:
我的線程開始(在一個按鈕單擊事件)
ThreadStart ts = new ThreadStart(() => DownloadFile(serverName, downloadedFileName, this.lblDownloadPercentage));
Thread t = new Thread(ts);
t.Name = "download";
t.Start();
t.Join();
我的線程方法
static void DownloadFile(string serverName, string downloadedFileName, Label statusLabel)
{
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(serverName);
do
{
//Download and save the file ...
SetPercentage(statusLabel, currentProgress);
} while(...)
}
的方法更新標籤文本
private static void SetPercentage(Label targetLabel, string value)
{
if (targetLabel.InvokeRequired)
{
targetLabel.Invoke((MethodInvoker)delegate
{
targetLabel.Text = value;
});
}
else
{
targetLabel.Text = value;
}
}
下載和保存部分工作正常,但是當談到targetLabel.Invoke-part(第3代碼片段)時,程序將停止執行任何操作。沒有崩潰,沒有錯誤信息,沒有例外。它只是停止。
這裏怎麼回事?
順便說一句,如果我離開了t.Join()的距離,該線程不啓動在所有...(爲什麼呢?)