asyncメソッドをGlobal.asaxのSession_Start
から呼び出すにはどうすればよいですか?Session_Startから非同期メソッドを呼び出す
のGlobal.asax:
protected async Task Session_Start(object sender, EventArgs e)
{
Session.Timeout = 10;
// Do some asynch work
await repository.SetStatsInfo(System.DateTime.Now);
}
非同期メソッド:
public async Task SetStatsInfo(DateTime time)
{
using (ApplicationDBContext db = new ApplicationDBContext())
{
// Do stuff (update visitors counter in db) ..
await db.SaveChangesAsync();
}
}
私が作業している(void Session_Start
などを定義)同期それをすべて実行することができますが、その打撃よう非同期の方法を好むだろうdbはブロックしていません。
Session_Start
に対して 'async Task'を実行すると、コードは実行されません。 中のブレークポイントはsession_start
にヒットしません。
Chrisが正しく言っています。単純に意味をなさないので、非同期である必要はありません。 http://stackoverflow.com/a/38956850/2410379 –
@DavidPineしかし、非同期タスク 'コールとしてのみ利用可能なAPIを使用する必要があるときはどうしたらよいですか? Stephenは明らかに、デッドロックの危険性から 'GetAwaiter()'や '.Result'を呼ぶ必要がないことを打ち明けました。NETアプリケーションの 'グローバル' 'Application_Start'メソッドは安全に非同期メソッドを呼び出しますか? –
Dai