0
我有我使用上傳下列方式文件的Web客戶端,base64Encoded是編碼爲Base64字符串的圖片,因爲這是什麼imgur服務器預計:WebClient.UploadValuesAsync沒有更新進度正常
public Upload()
{
WebClient webClient = new WebClient();
webClient.UploadProgressChanged += new UploadProgressChangedEventHandler(webClient_UploadProgressChanged);
webClient.UploadValuesCompleted += new UploadValuesCompletedEventHandler(webClient_UploadValuesCompleted);
NameValueCollection values = new NameValueCollection();
values.Add("key", "imgur api key");
values.Add("image", base64Encoded);
webClient.UploadValuesAsync(new Uri("http://api.imgur.com/2/upload"), "POST", values);
}
這是UploadProgressChanged事件處理程序:
private void webClient_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
int percentage = e.ProgressPercentage * 2;
progressBar.Value = percentage;
percentageTextBlock.Text = (percentage).ToString() + "%";
}
現在我的問題是,事件處理程序在一開始只叫一次,報告的50 ProgressPercentage
,然後沒有再調用。文件上傳成功,但我的進度條不起作用。這並不是因爲我正在上傳一個小文件,因爲我也嘗試過使用幾個MB的文件,它也會立即報告一個ProgressPercentage
。 e.BytesSent
也沒有幫助,因爲那一個也等於e.TotalBytesToSend
。這裏發生了什麼?
我明白了。我改變了我的項目目標.NET 4.0而不是3.5,它確實工作得很好。但是,我不想使用.NET 4.0,因爲我的大多數用戶仍然會使用.NET 3.5,並且不希望僅爲我的應用安裝4.0。有沒有可能的解決方法?我應該在另一個線程上使用UploadValues()方法,然後自己更新GUI嗎? – dimski 2011-01-22 15:21:36