C# 线程下载文件异步

C# 线程下载文件异步,c#,wpf,multithreading,downloadfileasync,C#,Wpf,Multithreading,Downloadfileasync,我可能很愚蠢,但如何解决以下问题? 当我想下载许多文件时,我会使用链接列表和线程WebClient.DownloadFileAsync。但我希望在此过程中更新我的UI(ProgressBar),因此我使用部分解决了这个问题 但当我应用这部分代码时 void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { this.Dispatcher.BeginInvo

我可能很愚蠢,但如何解决以下问题? 当我想下载许多文件时,我会使用链接列表和线程WebClient.DownloadFileAsync。但我希望在此过程中更新我的UI(ProgressBar),因此我使用部分解决了这个问题

但当我应用这部分代码时

void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        this.Dispatcher.BeginInvoke((Delegate MethodInvoker)
        {
            double bytesIn = double.Parse(e.BytesReceived.ToString());
            double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
            double percentage = bytesIn / totalBytes * 100;
            thebar.Value = int.Parse(Math.Truncate(percentage).ToString());
        });
    }

我得到“'System.Delegate'是一个'type',但像'variable'一样使用”错误。

您可以调用
Dispatcher.BeginInvoke()
在WPF UI线程上运行委托。

好的,这有助于解决第一个问题。非常感谢,尽管我无法尝试,因为第二个仍然存在。请使用
操作
委托。您需要学习委托和匿名方法的基础知识。具体来说,您需要将匿名方法强制转换为兼容的委托类型。见鬼,还是什么都没有。我了解MSDN页面上的内容,但不明白。我不是这方面的专业人士(习惯于在空闲时间编写代码),所以如果你能帮助我克服所谓的匿名方法,我会非常高兴。