C# WebClient.OpenFileAsync fire下载进度是否更改

C# WebClient.OpenFileAsync fire下载进度是否更改,c#,.net,webclient,C#,.net,Webclient,据 , OpenFileAsync应该在取得进展时启动DownloadProgressChanged 我根本无法让它开火。不过,使用DownloadDataAsync和DownloadFileAsync可以触发 下面是一个简单的例子: using System; using System.Net; namespace ConsoleApplication1 { class Program { static void Main(string[] args)

,

OpenFileAsync应该在取得进展时启动DownloadProgressChanged

我根本无法让它开火。不过,使用DownloadDataAsync和DownloadFileAsync可以触发

下面是一个简单的例子:

using System;
using System.Net;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient client = new WebClient();
            client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
            client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
            client.OpenReadAsync(new Uri("http://www.stackoverflow.com"));
            Console.ReadKey();
        }

        static void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            Console.WriteLine("{0}% Downloaded", e.ProgressPercentage);
        }

        static void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            Console.WriteLine("Open Read Completed");
        }
    }
}

对我来说,DownloadProgressChanged事件从未触发,尽管更改为DownloadFileAsync或DownloadDataAsync,确实如此。

我查看了框架源代码,据我所知,OpenReadAsync从未涉及触发DownloadProgressChanged的内容

它不像DownloadDataAsync和DownloadFileAsync那样调用GetBytes do,这似乎是启动事件的原因

为了解决这个问题,我只使用了DownloadDataAsync,它确实会触发事件,并允许我为下载提供UI反馈。它返回一个字节数组而不是我需要的流,但这不是问题


所以我假设这里的错误是MSDN,OpenReadAsync不会触发DownloadProgressChanged。

我已经查看了框架源代码,据我所知,OpenReadAsync从未涉及触发DownloadProgressChanged的内容

它不像DownloadDataAsync和DownloadFileAsync那样调用GetBytes do,这似乎是启动事件的原因

为了解决这个问题,我只使用了DownloadDataAsync,它确实会触发事件,并允许我为下载提供UI反馈。它返回一个字节数组而不是我需要的流,但这不是问题


所以我假设这里的错误是MSDN,OpenReadAsync不会触发DownloadProgressChanged。

是的,这是我在回答中告诉你的。你自己提出答案,并对我的答案投反对票,这绝对不是本网站的精神所在。这就像违反了本网站许可证中的“归属要求”条款。我会请主持人看一看。很抱歉你这么想,如果我做错了什么,请道歉。我想也许我对这个问题说得不够好。这真的是一个“我是疯了还是MSDN在乱涂乱画?”是的,这就是我在回答中告诉你的。你自己提出答案,并对我的答案投反对票,这绝对不是本网站的精神所在。这就像违反了本网站许可证中的“归属要求”条款。我会请主持人看一看。很抱歉你这么想,如果我做错了什么,请道歉。我想也许我对这个问题说得不够好。这真的是一个“我是疯了还是MSDN在说涂鸦?”的案例,我实际上有一个不同的结果(使用.Net4)。在我的测试中,DownloadProgressChanged在使用DownloadDataAsync()时完全激发。但是,如果我尝试使用DownloadFileAsync(),它根本不会启动/如果其他人遇到这种情况,DownloadFileAsync()将返回void,因此据我所知,无法知道它是否遇到错误。在我的情况下,我没有创建下载到的目录。这导致该方法出错,并且没有触发任何事件。创建下载文件夹后,我的文件下载到该文件夹后,该文件夹按预期工作。实际上,我有一个不同的结果(使用.Net4)。在我的测试中,DownloadProgressChanged在使用DownloadDataAsync()时完全激发。但是,如果我尝试使用DownloadFileAsync(),它根本不会启动/如果其他人遇到这种情况,DownloadFileAsync()将返回void,因此据我所知,无法知道它是否遇到错误。在我的情况下,我没有创建下载到的目录。这导致该方法出错,并且没有触发任何事件。创建下载文件夹后,我的文件将下载到该文件夹,并按预期工作。