【问题标题】:Threaded DownloadFileAsync线程下载文件异步
【发布时间】:2014-11-30 16:08:08
【问题描述】:

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

但是当我应用这部分代码时

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' is a 'type' but is used like a 'variable'”错误。

【问题讨论】:

    标签: c# wpf multithreading downloadfileasync


    【解决方案1】:

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

    【讨论】:

    • 好吧,这有助于解决第一个问题。非常感谢,尽管我无法尝试,因为第二个仍然存在。
    • 使用Action委托。
    • 您需要学习委托和匿名方法的基础知识。 msdn.microsoft.com/en-us/library/0yw3tz5k.aspx
    • 具体来说,您需要将匿名方法强制转换为兼容的委托类型。
    • 见鬼,还是什么都没有。我了解那个 MSDN 页面上的内容,但不明白。我不是这方面的专业人士(以前在空闲时间编码),所以如果你能帮助我克服所谓的匿名方法,我会非常高兴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多