.Net BackgroundWorker не отвечает - PullRequest
1 голос
/ 05 марта 2012

Я создаю BackgroundWorker в своем приложении C #. Внутри DoWork мало веб-сервисов называется. Все работает нормально, но как только процесс DoWork завершен, приложение перестает отвечать на запросы. А также, я не обновляю ни один компонент пользовательского интерфейса с BackgroundWorker.

Вот код, выполняемый в DoWork

 private void bwNQUpdate_DoWork(object sender, DoWorkEventArgs e)
 {
     int nStatusCode = 0;

     QDetails[] pQDetails = null;
     string queueName = "test_queue";

     int nQLength = cMezeoFileCloud.NQGetLength(ServiceUrl, queueName, ref nStatusCode);
     if (nQLength > 0)
         pQDetails = cFileCloud.GetData(ServiceUrl, queueName, nQLength, ref nStatusCode);

     if (pQDetails != null)
     {        
         for (int n = 0; n < pQDetails[0].nTotalQ; n++)
         {             
             UpdateFromNQ(pNQDetails[n]);
             cFileCloud.QValue(ServiceUrl , queueName, 1, ref nStatusCode);
         } 
     }     
 }

А на RunWorkerCompleted

private void bwNQUpdate_RunWorkerCompleted(object sender, ProgressChangedEventArgs e)
{
      MessageBox.Show("Download completed.");
}

После выполнения RunWorkerCompleted приложение не отвечает.

Ответы [ 2 ]

1 голос
/ 27 апреля 2012

Сначала проверьте, вызывается ли MessageBox.Show("Download completed."); с использованием точки останова.

Если он вызывается, попробуйте вызвать вызов из окна сообщения, а не вызывать его напрямую. По сути, любые события, запускаемые из фонового рабочего, могут исходить из его нижележащего потока.

0 голосов
/ 27 апреля 2012

RunWorkerCompleted, который вы написали, прекрасно.Событие RunWorkerCompleted обрабатывается вызывающим потоком, а не рабочим потоком.Даже если вы делаете MessageBox.Show из фонового потока, проблем не будет, так как поток создаст свой собственный Uicomponent.

Проблема, в которой я сомневаюсь, находится внутри вашего DoWork.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...