私たちのASP.NET webformsプロジェクトでは、Page.RegisterAsyncTask()
を使用して、私たちのサイトにいくつかの非同期性を追加し始めています。私たちはほとんどのページと私たちのマスターページ(これは別のdllにあります)でPage_Load
イベントを利用しています。Page.RegisterAsyncTaskと従属コード?
If Not IsPostBack Then
If Session("Id") Is Nothing Then
RegisterAsyncTask(New PageAsyncTask(New Func(Of Task)(Async Function()
Await InitializeSessionVariablesAsync(EntryPointCode.AccountAccess)
End Function)))
End If
同期モードでマスターページ用Page_Load
を継承ページ用Page_Load
後に呼び出されるので、このコードはもちろんの罰金に動作します:私たちが抱えている問題は、マスターページが継承されたフォームが移入というセッション変数を使用しています。上記のコードを使用すると、非同期タスクがまだ実行されていないため、セッション変数を使用しようとするとマスターページにエラーが発生します。あなたが登録した非同期タスクを待つ方法があることを望みます。
RegisterAsyncTask
への登録後すぐにExecuteRegisteredAsyncTasks
を追加しようとしましたが、それは役に立たなかった。
マスターページで「await」が1つもないと思いますか? – YK1
@ YK1:試してみませんでしたが、マスターページで 'RegisterAsyncTask'(または' async void'ハンドラ)を使用できない理由はありません。 –