如何在C#中成功下载.exe文件?

new*_*guy 1 c# download downloadfileasync async-await webclient-download

我正在尝试test.exe使用以下代码下载文件:

public void DownloadFile()
{
    using(var client = new WebClient())
    {
         client.DownloadFileAsync(new Uri("http://www.acromix.net16.net/download/test.exe"), "test.exe");
    }
}
Run Code Online (Sandbox Code Playgroud)

使用这个简单的代码,我调试它,这是输出: 产量

我不知道,也不知道为什么它是0 KB(应该是328 KB).[ / downloads ]

我怎样才能使它工作?

编辑: 托管网站(000webhost)阻止.exe文件下载...

iea*_*lle 5

问题是您使用的DownloadFileAsync是异步版本.要知道下载何时完成,您必须订阅DownloadFileCompleted活动.

使用同步方法:

public void DownloadFile()
{
    using(var client = new WebClient())
    {
        client.DownloadFile(new Uri("http://www.acromix.net16.net/download/test.exe"), "test.exe");
    }
}
Run Code Online (Sandbox Code Playgroud)

或者使用新的异步等待方法:

public async Task DownloadFileAsync()
{
    using(var client = new WebClient())
    {
        await client.DownloadFileTaskAsync(new Uri("http://www.acromix.net16.net/download/test.exe"), "test.exe");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样调用这个方法:

await DownloadFileAsync();
Run Code Online (Sandbox Code Playgroud)

  • 因为,`WebClient`将是`DownloadFileTaskAsync`. (2认同)