Page_Load
に登録されたGetData
タスクは、非同期タスクなのでIndex.aspx
のロードをブロックしないと考えました。ページがレンダリングされてから5秒後にlblDataが設定され、Index.aspx
に反映されます。`Page_Load`に登録された` PageAsyncTask`が同期して動いているのはなぜですか?
私の場合、Index.aspx
のロードは、非同期GetData
が完了するのを待って、5秒間ブロックされます。は5秒後にレンダリングされます。
これは予想されますか?または、私が何か問題があったためにGetData
が同期して実行されていますか?
// Index.aspx.cs
public partial class Index : Page
{
protected string lblData;
protected void Page_Load(object sender, EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(GetData));
ExecuteRegisteredAsyncTasks();
}
public async Task GetData()
{
await Task.Delay(5000);
lblData = "Hello world!";
}
// ...
}
私はIndex.aspx
にAsync="true"
を追加しました。
詳細RegisterAyncTaskが役立つかもしれません。https://msdn.microsoft.com/en-us/library/system.web.ui.page.registerasynctask(v=vs.110).aspx – Eldho
同様のhttp: //stackoverflow.com/q/31567515/1876572 RegisterAsyncTaskで接続されたメソッドはPreRenderの直後に実行されると述べています。 – Eldho