2013-05-02 2 views
0

Я узнаю об асинхронных операциях в ASP.NET. Я нашел статью здесь MSDN. Код работает, но я хочу иметь возможность обновлять пользовательский интерфейс в течение длительного процесса. Он показывает результат только после завершения процесса. Я использую тот же код для AsyncClass, как в упомянутой ссылке. Вот код:PageAyncTask Update UI

  AsyncTask slowTask1 = new AsyncTask(); 
      PageAsyncTask task = new PageAsyncTask(slowTask1.OnBegin, slowTask1.OnEnd, slowTask1.OnTimeout, "Async1", true); 
      Page.AsyncTimeout = new TimeSpan(0, 0, 5); 
      Page.RegisterAsyncTask(task); 
      // Page.ExecuteRegisteredAsyncTasks(); 
      IAsyncResult result = slowTask1.OnBegin(this.Page,null,null,null); 

      WaitHandle waitHandle = result.AsyncWaitHandle; 
      waitHandle.WaitOne(2000, false); 

      if(result.IsCompleted) 
      { 
       slowTask1.OnEnd(result); 
       lbProgress.Text = slowTask1.GetAsyncTaskProgress(); 
       Thread.Sleep(1000); 
      } 
      else 
      lbProgress.Text = slowTask1.GetAsyncTaskProgress(); 

ответ

0

Вы не можете сделать это из кода позади. Пока ответ отправляется клиенту, завершается request/response. Поэтому, если вам нужно дождаться результата операции Async (как-то использовано в ответ) и все равно нужно обновить страницу, используйте AJAX и вытащите данные со стороны клиента.