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イベントが呼び出されました