В ASP.NET MVC 2 асинхронные контроллеры, Фильтры Действий выполняются асинхронно? - PullRequest
6 голосов
/ 06 мая 2011

В 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" в этом случае асинхронно?Другими словами, является ли его синхронный характер автоматически заключенным в асинхронный вызов?

1 Ответ

2 голосов
/ 06 мая 2011

Я посмотрел под прикрытием на AsyncControllerActionInvoker и похоже, что он действительно объединяет их в набор асинхронных вызовов и продолжений. Он вызывает BeginInvokeActionMethodWithFilters , который, в свою очередь, устанавливает InvokeActionMethodFilterAsynchronously .

Для тех, кому интересно, источник находится в кодекплексе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...