WebClient webClient = new WebClient(); webClient.UploadDataAsync(uri , "PUT", buffer, userToken);
0
0
Webclientを使用して、サーバーへの非同期呼び出しを使用してデータをアップロードしています。
WebClient webClient = new WebClient(); webClient.UploadDataAsync(uri , "PUT", buffer, userToken);
DatauploadProgressおよびDatauploadCompleted Eventsを適切なコールバック関数に添付しました
// Upload Date Completed webClient.UploadDataCompleted += new UploadDataCompletedEventHandler(UploadDataCallback2); // Upload Date Progress webClient.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressCallback);
そして、関数でいくつかのメッセージボックスを表示しようとしています:
// Upload Date Progress void UploadProgressCallback(object sender, UploadProgressChangedEventArgs e) { MessageBox.Show( this,"Upload Progress ,x =" +x); x++; MessageBox.Show(e.BytesSent.ToString()); } // Upload Date Completed void UploadDataCallback2(object sender, UploadDataCompletedEventArgs e) { MessageBox.Show(this, "Upload Done,x =" +x); x++; MessageBox.Show(ASCIIEncoding.UTF8.GetString(e.Result)); }
xはグローバル変数ですが、何らかの理由でxが増分されず、すべてのメッセージボックスにx = 0が表示されます。
どんな説明でも大歓迎です。
1 Answer
1
ああ、明らかに問題は2部構成の問題だったようです。誰かが私の結論を確認してくれることを願っています。
進行状況のMessageBox.showにより、関数の進行がブロックされ、[OK]を押すまでxがゼロのままになります。
アップロードするファイルが小さすぎたため、進行状況イベントからメッセージボックスの[OK]をクリックするのに十分な時間を得る前にdatauploadcompletedイベントが呼び出されました