将文件名传递到下载文件使用 webClient C# 在异步文件下载中完成

本文关键字:异步 文件下载 webClient 文件名 下载 文件 | 更新日期: 2023-09-27 17:56:54

我的程序正在使用队列使用 webClient 以异步方法逐个下载文件列表。它看起来像这样:

    public void DownloadFile()
    {
        if (_downloadUrls.Any())
        {
            var urlAddress = _downloadUrls.Dequeue();
            //Irrelevant code that gets correct URL, and location from queue _downloadUrls
            try
            {
                // Start downloading the file
                webClient1.DownloadFileAsync(URL, location);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        else
        {
            MessageBox.Show("complete!");
        }
    }

这是我的下载文件完成代码:

private void webClient1_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
    {
        if (e.Cancelled == true)
        {
            // MessageBox.Show("Download has been canceled.");
        }
        else
        {
            DownloadFile();
        }
    }

静止是我如何将有关文件名的信息传递给下载文件完成?我想更改下载文件的上次访问日期,以便它们与服务器上相同,我只能在webClient1_DownloadFileCompleted中执行此操作,但我不知道哪个文件触发事件下载文件已完成。如何将此信息传递给下载文件已完成(最好作为参数中的字符串)。

将文件名传递到下载文件使用 webClient C# 在异步文件下载中完成

使用 overload 方法 WebClient.DownloadFileAsync(Uri address, string fileName, object userToken) ,可以将文件名作为 userToken 传递,然后在 DownloadFileCompleted 处理程序中访问它。

用户令牌:A user-defined object that is passed to the method invoked when the asynchronous operation completes.

http://msdn.microsoft.com/en-us/library/ms144197(v=vs.110).aspx