ASP.NET MVC4Webアプリケーションに取り組んでいます。私は.NET4.5を使用しており、新しい非同期APIを利用しようとしています。
すぐに重要な値をすぐに返す間に、非同期タスクを後で実行するようにスケジュールしたい状況がいくつかあります。たとえば、これは「ログイン」メソッドで、新しいSessionIDをできるだけ早く返したいのですが、SessionIDを返したら、期限切れの古いSessionIDを削除したいと思います。
public async Task<Guid> LogIn(string UserName, string Password)
{
//Asynchronously get ClientID from DB using UserName and Password
Session NewSession = new Session()
{
ClientID = ClientID,
TimeStamp = DateTime.Now
};
DB.Sessions.Add(NewSession);
await DB.SaveChangesAsync(); //NewSession.ID is autopopulated by DB
CleanSessions(ClientID); //Async method which I want to execute later
return NewSession.ID;
}
private async void CleanSessions(int ClientID)
{
//Asynchronously get expired sessions from DB based on ClientID and mark them for removal
await DB.SaveChangesAsync();
}
Task.Run()とParallel.Invoke()の組み合わせなど、さまざまなことを試しましたが、CleanSessionsが呼び出されることはありません。バックグラウンドタスクのスケジューリングを実現するにはどうすればよいですか?