WebClient.DownloadFileAsync方法:如何检索对象?

pan*_*dra 4 c# multithreading webclient

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

public void DownloadFileAsync(Uri地址,字符串fileName,Object userToken)

和MSDN说> userToken

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

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

wc.DownloadFileAsync(uri, file.StorePath,file);
Run Code Online (Sandbox Code Playgroud)

我的下载完整方法是

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

        }
Run Code Online (Sandbox Code Playgroud)

错误是: 无法将类型为"System.Net.WebClient"的对象强制转换为FileLibrary'.

Accorrding我上面描述的理解,对象应该被强制转换为 filelibrary容易becouse我在同类型的呼叫发送的文件名.为什么我收到错误或有任何其他方法来检索发送的对象:userToken

Har*_*san 8

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

试试这个

var file = (FileLibrary) e.UserState