【发布时间】:2010-05-02 10:01:53
【问题描述】:
好吧,在这里做了一些谷歌搜索和搜索,我发现唯一相关的问题是this,尽管它的唯一答案没有被标记为已接受,是旧的并且令人困惑。
我的问题基本上就是我在标题中所说的。发生的情况是 GUI 在上传过程中冻结。我的代码:
// stuff above snipped
public partial class Form1 : Form
{
WebClient wcUploader = new WebClient();
public Form1()
{
InitializeComponent();
wcUploader.UploadFileCompleted += new UploadFileCompletedEventHandler(UploadFileCompletedCallback);
wcUploader.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressCallback);
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string toUpload = openFileDialog1.FileName;
wcUploader.UploadFileAsync(new Uri("http://anyhub.net/api/upload"), "POST", toUpload);
}
}
void UploadFileCompletedCallback(object sender, UploadFileCompletedEventArgs e)
{
textBox1.Text = System.Text.Encoding.UTF8.GetString(e.Result);
}
void UploadProgressCallback(object sender, UploadProgressChangedEventArgs e)
{
textBox1.Text = (string)e.UserState + "\n\n"
+ "Uploaded " + e.BytesSent + "/" + e.TotalBytesToSend + "b (" + e.ProgressPercentage + "%)";
}
}
编辑:为了澄清,这是按顺序发生的:
- 我点击按钮1
- 我选择一个文件
- GUI 停止响应,因为当我单击它时没有任何反应
- 几秒钟后 50% 出现在文本框中 Aa 并且实现命中。查看我对我标记为解决方案的问题的评论
- 大约一秒钟后,GUI 中间没有响应,它被替换为响应
【问题讨论】:
-
为什么你认为它不是异步的?