4

サーバーから非同期的にファイルをダウンロードしようとしていますが、この目的で weblcient を使用しています。Asyschromously ファイルをダウンロードしているときに、DownloadFileAsync(Uri アドレス、文字列 fileName、Object) メソッド user-token でファイル (クラス ファイル ライブラリのインスタンス) を送信していますが、呼び出されたメソッドからこれで送信したオブジェクトを取得できません。ダウンロード完了後。ここにコードの詳細があります

public void DownloadFileAsync( Uri アドレス、文字列 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' にキャストできません。

上記の説明についての私の理解によれば、同じタイプの呼び出しで送信したファイル名のため、オブジェクトをファイルライブラリに簡単にキャストする必要があり ます。エラーが発生するのはなぜですか、または送信された Object:userToken を取得する他の方法がありますか

4

1 に答える 1

8

送信したオブジェクトは、e.UserStateプロパティを介してアクセスできる必要があります

これを試して

var file = (FileLibrary) e.UserState

于 2012-09-13T07:03:17.980 に答える