Web客户端进度不会显示在进度条中

时间:2014-01-05 22:09:50

标签: c# .net

我正在尝试从服务器下载带有webclient的文件。这非常好。但是当我尝试在进度条中显示下载进度时,它并没有给我任何进展。

我正在尝试使用 DownloadFileAsync -method下载该文件,以便为所有人创建一个自己的线程,以防止出现性能问题或冻结。

我在任何潜艇或事件之外宣布了WebClient:

private WebClient updateDownloader = new WebClient();

这与 Form.Shown -Event:

中的内容类似
updateDownloader.DownloadFileAsync(new Uri(UriGoesHere), PathToSave);

它在Try-Block中。

我创建了一个像这样的子来显示进度条的进度:

private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
    progressBar1.Value = e.ProgressPercentage;
}

表单加载 -Event中,我创建了eventhandler:

updateDownloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);

这应该在理论上有用,但事实并非如此,我已经访问过MSDN并看到了一些信息,只有一些方法正在运行,但实现这一点并没有帮助。

它永远不会到达这一个。我究竟做错了什么?如果您需要更多代码部分,请告诉我。

2 个答案:

答案 0 :(得分:0)

您是否尝试修改所显示的表格'活动:

Application.DoEvents();
updateDownloader.DownloadFileAsync(new Uri(UriGoesHere), PathToSave);

答案 1 :(得分:-1)

您需要从主UI线程更新进度条。您无法直接从其他线程更新UI。