0

私は Webclient を使用してファイルをアップロードしていますが、ユーザーが中止をクリックしたときに発生します。アップロードをキャンセルしたいのですが、ファイルは完了するまでアップロードを続けます。中止ボタンで wc.CancelAsync を発行しました。これにより、フォームが閉じられ、Program.cs で TargetInvocationException was unhandled エラーが発行されました。

[STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new frmUpload());
}

ここに私のコードの一部があります

WebClient wc = new WebClient();  

    private void buttonAbort_Click(object sender, EventArgs e)
    {
        wc.CancelAsync();
    }

//Upload code
    try
    {
        wc.UploadFileAsync(Uripath, localPath);                    
        wc.UploadProgressChanged += uploadBarStat;
        wc.UploadFileCompleted += new UploadFileCompletedEventHandler(doneFTP);
    }

私の質問は、BackgroundWorker 内で Webclient.DownloadFileをキャンセルするのとほぼ同じです。

アップロードをスムーズにキャンセルするには何が必要ですか? または例外エラーをトラップしますか?

ティア・スティーブ

4

2 に答える 2

0

変数ブール値を追加します。

bool inUpload=false;

次に、次のように値を変更します。

    void UploadProgressChanged()
            {
               inUpload=true;
            }

void UploadFileCompleted()
            {
               inUpload=false;
            }

チェックインクリックイベントを追加します。

 private void buttonAbort_Click(object sender, EventArgs e)
    {
       if (inUpload) wc.CancelAsync();
    }
于 2013-01-09T21:39:34.530 に答える
0

その「お試し」に合うコツはありますか?また、try/catch でラップしてwc.CancelAsync();から、デバッガーを実行します。TargetInvocationErrorキャッチを介して通常の例外のようにキャッチされますか、それとも IDE で醜いエラーがスローされますか?

それでも IDE で醜いエラーがスローされる場合は、おそらくこの投稿が役立つでしょう。

TargetInvocationException が IDE によってキャッチされないものとして扱われるのはなぜですか

于 2013-01-09T17:40:55.657 に答える