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