6
在ASP.NET MVC 2個異步控制器,我們可以做這樣的事情:在ASP.NET MVC 2異步控制器中,動作過濾器是否異步執行?
public class SomeController : AsyncController
{
[Blurb]
public void FooAsync()
{
this.AsyncManager.OutstandingOperations.Increment();
Task.Factory.StartNew(
() =>
{
this.AsyncManager.Parameters["result"] = new BazResult();
this.AsyncManager.OutstandingOperations.Decrement();
});
}
public ActionResult FooCompleted(ActionResult result)
{
return result;
}
}
我的問題是,它的行爲過濾「的Blurb」在這種情況下異步執行?換句話說,它的同步特性是否被自動包裝成異步調用?
所以過濾器在另一個線程上執行? BeginInvoke不使用線程池線程嗎?這不是打敗異步電話的目的嗎? – 2011-05-05 20:55:27
我的理解是,異步調用不使用Web請求使用的相同線程池,所以IIS不會面臨線程匱乏。 – 2011-05-05 20:57:21