非同期コントローラーでいくつかのテストを行っていますが、次のコードがあります。
public class AsyncSampleController : AsyncController
{
public void IndexAsync()
{
Tasks tasks = new Tasks();
//Indicates that we already started an asynchronous operation
AsyncManager.OutstandingOperations.Increment();
//Task.Factory start new to use another thread to use our operation.
Task.Factory.StartNew(() =>
{
Stopwatch s1 = Stopwatch.StartNew();
tasks.BigOperation();
s1.Stop();
long data=s1.ElapsedMilliseconds;
AsyncManager.Parameters.Add("data",data);
});
AsyncManager.OutstandingOperations.Decrement();
}
public ActionResult IndexCompleted(long data)
{
ViewBag.ElapsedTime = data.ToString();
return View();
}
}
問題は、メソッド BigOperation が多かれ少なかれ 1 秒を費やしていることですが、IndexCompleted アクションのデータ パラメーターに保存された経過値を取得していません。