在我的项目中,我有一个下载文件的部分。我使用DownloadFileAsync()
方法下载并添加两个事件处理程序:
DownloadProgressChanged
DownloadFileCompleted
我想使用DownloadFileAsync下载文件,阻止主线程,因为我不希望用户在下载完成之前点击按钮。
我的部分代码:
WebClient webClient = new WebClient();
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChange);
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
Uri Url = new Uri(txtUrl.Text.Trim());
webClient.DownloadFileAsync(Url,FolderDialog.SelectedPath+System.IO.Path.GetFileName(txtUrl.Text) );
我该怎么做? 我在互联网上搜索但我找不到有用的结果。感谢
答案 0 :(得分:6)
禁用控件比故意阻止UI线程更好。在Windows窗体中,可以通过将Control.Enabled
设置为false
来完成此操作。我不熟悉WPF,所以不能说出你在那里做的事情。无论如何,禁用控件可以在不停止正常处理事件的情况下为您提供所需的行为,因此用户仍然可以移动窗口,它仍然会重新绘制,等等。
答案 1 :(得分:2)
您不需要禁用整个线程,只需禁用该按钮即可。如果你真的想要禁用主线程,只需调用thread.sleep,但这样做会使下载异步的目的失败,因为最终结果与正常下载相同。
答案 2 :(得分:0)
正如其他人所说,根据我的经验,这样做的一般方法是: