Как я могу изменить интерфейс своей страницы после асинхронного вызова? - PullRequest
0 голосов
/ 01 октября 2011

У меня асинхронный вызов на моей странице, это занимает около 1 минуты.Мне нужно изменить пользовательский интерфейс после завершения вызова.Пример кода приведен ниже.

 protected void Unnamed1_Click(object sender, EventArgs e)
{


    apicasystemWPMCheckStatsService.CheckStatsServiceClient obj = new apicasystemWPMCheckStatsService.CheckStatsServiceClient();
    string xmlOptionForGetCheckStats = "<options><mostrecent count='1'/><dataformat>xml</dataformat><timeformat>tz</timeformat></options>";
    string checkId = "";


    TextBox1.Text = TextBox1.Text + "test" + "\r\n";
    obj.BeginGetCheckStats("admin@azuremonitoring", "Cu4snfPSGr8=", "PD6B685A0-006A-4405-951E-B24BB51E7966",
                                       checkId, xmlOptionForGetCheckStats, new AsyncCallback(ONEndGetCheckStats), null);


    TextBox1.Text = TextBox1.Text + "testdone" + "\r\n";


}


public void ONEndGetCheckStats(IAsyncResult asyncResult)
{

    System.Threading.Thread.Sleep(3000);
    TextBox1.Text = TextBox1.Text + "testcomplete" + "\r\n";

}

Вопрос в том, как я могу получить "testcomplete" в моем текстовом поле.так как моя страница не публикуется после этого асинхронного вызова ....

Мой текущий O / P: testddone

Ожидается: testdone testcomplet * test8

1 Ответ

0 голосов
/ 01 октября 2011

Простой ответ: Вы не можете так делать.Поскольку после отправки страницы ASPX клиенту сервер не может обойтись без этой связи.

Однако это можно сделать с помощью AJAX.В вашем Unnamed1_Click установите «флаг» в Session, который сигнализирует о том, что асинхронная операция ожидает выполнения.В вашем ONEndGetCheckStats установите этот «флаг», чтобы сигнализировать о завершении операции.Добавьте метод страницы ASP.NET ( Quick Tutorial ) к своему коду, который:

  • Проверяет, ожидает ли операция ожидание, и возвращает null, если это
  • По завершении операции удаляет все из Session и возвращает нужный вам текст

На странице ASPX подключите событие на стороне клиента к Unamed1 (плохое имя длякнопка между прочим) кнопка, которая запускает цикл на стороне клиента, проверяющий состояние с помощью этого PageMethod.Когда статус больше не null Javascript для изменения текста TextBox1.

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