根據不WebClient.OpenFileAsync火DownloadProgressChanged
http://msdn.microsoft.com/en-us/library/system.net.webclient.downloadprogresschanged.aspx,
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和它的作用。
我實際上有不同的結果(使用.Net4)。使用DownloadDataAsync()時,使用我的測試DownloadProgressChanged可以完美地觸發。但是如果我嘗試使用DownloadFileAsync(),它根本不會觸發! :/ – 2016-02-24 22:22:17
在其他人遇到這種情況下,DownloadFileAsync()返回void,因此無法知道它是否會遇到錯誤,據我所知。在我的情況下,我沒有創建我正在下載的目錄。這導致該方法錯誤並且不觸發任何事件。創建下載文件夾後,我的文件正在下載到它,它按預期工作。 – 2016-02-24 22:37:01