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

时间:2012-09-13 06:46:43

标签: c# multithreading webclient

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

  

public void DownloadFileAsync(       Uri地址,       string fileName,       对象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

1 个答案:

答案 0 :(得分:8)

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

访问

试试这个

var file = (FileLibrary) e.UserState