2009-06-11 41 views

答えて

18

WebClient.UploadFileAsyncこれを行うことができます。

WebClient webClient = new WebClient(); 
webClient.UploadFileAsync(address, fileName); 
webClient.UploadProgressChanged += WebClientUploadProgressChanged; 

...スレッドはもうアップロードにブロックされませんので、私が使用してお勧めしたいこと

void WebClientUploadProgressChanged(object sender, UploadProgressChangedEventArgs e) 
{ 
     Console.WriteLine("Upload {0}% complete. ", e.ProgressPercentage); 
} 

注:

webClient.UploadFileCompleted += WebClientUploadCompleted; 

...

void WebClientUploadCompleted(object sender, UploadFileCompletedEventArgs e) 
{ 
    // The upload is finished, clean up 
} 
+0

ありがとうございました。私はマルチスレッドで作業しています。ファイルのアップロードはすでに別のスレッドで実行されています。だから私はちょうどUploadfileメソッドまたはUploadfileAsyncメソッドを使用する必要がありますか? –

+0

あなたはまだUploadFileAsyncする必要があります私は恐れている、スレッドはUploadFileの呼び出しでブロックされますので、それらのイベントは決して呼び出されません。アップロードを開始するときにboolフラグを設定し、uploadcompleteでリセットしてから、フラグがクリアされるまでthread.sleepにリセットすることで、独自のブロッキングを再作成できます。 –

+0

注: '' 'UploadProgressChanged'''イベントは' '' 'UploadDataAsync'''メソッドでうまく動作しません –

2

イベントハンドラをWebClient.UploadProgressChangedに追加するWebClient.UploadFileAsyncを呼び出します。

例については、WebClient.UploadProgressChangedのドキュメントを参照してください。

関連する問題