私はC#Winformsアプリケーションを開発しています。アプリケーションの一部は、AsyncUploadを使用してWebサーバーにファイルをアップロードします(porgressコールバックを使用する必要があるため、それを使用します)、C#プログラムで
アップロード関数を呼び出す単純な for ループを取得しました
for(int i=0;i < 10 ; i++)
{
Uploadfun();
}
そして、楽しみはいくつかの魔法を行います:
Uploadfun()
{
// Logic comes here
// webClient.UploadFileAsync runs a 2nd thread to perform upload ..
webClient.UploadFileAsync(uri, "PUT", fileNameOnHD);
}
非同期アップロードが完了したときに呼び出されるコールバック
Upload_Completed_callback()
{
//Callback event
}
編集
論理シーケンス:
- Fun が呼び出されます (ループから)
- 楽しいロジックが実行され、完了します。
- for ループに戻る
- UploadFileAsync (別のスレッドでいくつかのロジックを実行している) が終了すると、最終的にコールバックが呼び出されます。
問題は 3 番目のポイントにあります。実行が for ループに戻ると、コールバックが呼び出されるまでループが継続するのをブロックする必要があります。