Когда вы порождаете асинхронные операции, вызывая методы BeginXyz / EndXyz из действия вашего контроллера, потоки, обрабатывающие асинхронный ответ, не находятся под контролем ASP.NET.Таким образом, вы не можете коснуться HttpContext, экземпляра контроллера или любого другого общего состояния из этих потоков.Вызов метода Sync () в основном синхронизирует доступ к запросу;он восстанавливает HttpContext.Current и предоставляет вам доступ к касанию HttpContext, контроллера и т. д., но только на время вызова Sync ().Метод расширения RegisterTask () из MVC Futures пытается сделать это немного проще, поскольку вы в основном передаете его делегаты целевым методам Begin и End, а помощник RegisterTask () гарантирует, что поток End будет выполняться в соответствующем контексте синхронизации.
Если вы порождаете асинхронные операции, вызывая методы XyzAsync / XyzCompleted из действия вашего контроллера, вам не нужно об этом беспокоиться, поскольку завершенный обработчик автоматически запускается в контексте синхронизации.