2014-10-24 3 views
3

Я пытаюсь создать асинхронную задачу в ASP.NET Webforms. Изучив различные источники из Интернета, я создал это:Не удается запустить задачу async в ASP.NET Webforms

Default.aspx:

namespace AsyncTestCs 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      RegisterAsyncTask(new PageAsyncTask(LoadSomeData)); 
     } 

     public async Task LoadSomeData() 
     { 
      var downloadedString = await new WebClient().DownloadStringTaskAsync("http://localhost:59850/WebForm1.aspx"); 

      Label1.Text = downloadedString; 
     } 
    } 
} 

WebForm1.aspx:

namespace AsyncTestCs 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      Thread.Sleep(5000); 
      Response.Write("something"); 
     } 
    } 
} 

, но он не работает в асинхронном режиме. Эта страница будет отображаться после загрузки downloadString.

Где моя ошибка?

ответ

2

Ваш код сервера не прикреплен к элементам управления на клиенте. ASP.NET генерирует HTML как часть его обработки и отправляет его клиенту. После этого все объекты ASP.NET, связанные с запросом, умирают. HTTP основан на запросе-ответе. Постоянного соединения нет.

Что вы здесь делаете, подождите 5 секунд, затем настройте текст ярлыка, а затем отправьте HTML с текстом этой метки клиенту.

Async не имеет ничего общего с задержанными обновлениями для клиента.

Смежные вопросы