Глобальная переменная не увеличивается в функциях обратного вызова - PullRequest
0 голосов
/ 24 января 2010

Я использую Webclient для загрузки данных с помощью асинхронного вызова на сервер,

    WebClient webClient = new WebClient();
   webClient.UploadDataAsync(uri , "PUT", buffer, userToken);

Я прикрепил события DatauploadProgress и DatauploadCompleted к соответствующим функциям обратного вызова

        // Upload Date Completed 
        webClient.UploadDataCompleted += new
                UploadDataCompletedEventHandler(UploadDataCallback2);

        // Upload Date Progress
        webClient.UploadProgressChanged += new 
                 UploadProgressChangedEventHandler(UploadProgressCallback);

и в функциях я пытаюсь показать некоторые MessageBoxes:

      // 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 Ответ

1 голос
/ 24 января 2010

О, нашел проблему, ну, очевидно, проблема была в двух частях, и я надеюсь, что кто-то подтвердит мой вывод:

MessageBox.show о прогрессе, заблокировал выполнение функции, в результате чего x оставался на нуле, пока я не нажал ok.

Файлы, которые я загружал, были слишком маленькими, поэтому событие datauploadcompleted было вызвано до того, как у меня появилось достаточно времени, чтобы нажать кнопку ОК на окне сообщения из события прогресса
...