c# - WebClient.DownloadFileAsync 方法 : How to retrieve the Object?

标签 c# multithreading webclient

我正在尝试从服务器异步下载文件,为此我正在使用 weblcient。下载文件 Asyschromously 时,我在 DownloadFileAsync(Uri 地址,字符串文件名,对象)方法用户 token 中发送文件(类文件库的实例),但我无法检索我从调用的方法中发送的对象下载完成后。这是代码细节

public void DownloadFileAsync( Uri address, string fileName, Object userToken )

MSDN 说 > userToken

类型:System.Object 传递给异步操作完成时调用的方法的用户定义对象。

实际上,我在调用中传递了文件名:

wc.DownloadFileAsync(uri, file.StorePath,file);

而我的下载完成方法是

void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            var file = (FileLibrary)sender;
            this.DownloadedFileName = file.FileId;

        }

错误是: 无法将“System.Net.WebClient”类型的对象转换为类型 FileLibrary。

根据我对上面描述的理解,对象应该被转换为 filelibrary 很容易因为我在相同类型的调用中发送的文件名。为什么我收到错误 或者是否有任何其他方法来检索发送的 Object:userToken

最佳答案

您发送的对象应该可以通过 e.UserState 访问属性

试试这个

var file = (FileLibrary) e.UserState

关于c# - WebClient.DownloadFileAsync 方法 : How to retrieve the Object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12400841/

相关文章:

c# - TFS API - 如何从特定团队项目中获取工作项

c# - 如何在 ItextSharp(PdfStamper) 中增加 PDF 字段的字体大小?

java - 何时在 java 多线程中重置 CyclicBarrier

c# - 控制台应用程序在异步调用完成之前终止

c# - 设置数据绑定(bind)后如何向列表框添加内容?

Python Semaphore 似乎在 Google Colab 中不起作用

multithreading - 使用同步时出现问题

c# - WebClient.DownloadString 结果与浏览器结果不匹配

C# webclient 和代理服务器

c# - 删除 HttpClient 请求中的主机 header