Какой это тип сортировки?

Я просто возился с этой проблемой снова в проекте MVC.Net. Если вы хотите вызывать методы async из PartialView, вам не разрешается выполнять асинхронную процедуру PartialView. Вы получите исключение, если вы это сделаете.

Итак, в основном простой способ в сценарии, где вы хотите вызвать метод async из метода синхронизации, вы можете сделать следующее:

  1. перед вызовом, очистите SynchronizationContext
  2. , выполните здесь тупик, подождите, пока он закончит
  3. восстановить SynchronizationContext

Пример:

    public ActionResult DisplayUserInfo(string userName)
    {
        // trick to prevent deadlocks of calling async method 
        // and waiting for on a sync UI thread.
        var syncContext = SynchronizationContext.Current;
        SynchronizationContext.SetSynchronizationContext(null);

        //  this is the async call, wait for the result (!)
        var model = _asyncService.GetUserInfo(Username).Result;

        // restore the context
        SynchronizationContext.SetSynchronizationContext(syncContext);

        return PartialView("_UserInfo", model);
    }
1
задан SCFrench 30 September 2010 в 22:38
поделиться