2013-09-25 4 views
2

왜 CreateManager 및 CreateLocalUserAsync와 같은 UserManagerExtensions의 비동기 및 동기화 버전이 있습니까?하지만 RoleManagerExtensions에는 비동기 메소드 만 있습니까? 레거시 코드에서 역할에 사용자를 추가하는 방법은 무엇입니까? AddUserToRoleAsync 만 있고 동 기적으로 실행할 때 교착 상태가 있습니다. AddUserToRoleAsync (userId, role). 결과가 중단되고 .ConfigureAwait (false)도 아무 작업도 수행하지 않습니다.ASP.NET ID 비동기 대 동기화 문제

답변

3

RTM 버전의 경우 동기화 버전이있을 것입니다. RC 버전의 버그 일뿐입니다.

static class AsyncHelper { 
    private static readonly TaskFactory _myTaskFactory = new TaskFactory(CancellationToken.None, TaskCreationOptions.None, TaskContinuationOptions.None, TaskScheduler.Default); 
    public static TResult RunSync<TResult>(Func<Task<TResult>> func) { 
     return _myTaskFactory.StartNew(func).Unwrap().GetAwaiter().GetResult(); 
    } 

    public static void RunSync(Func<Task> func) { 
     _myTaskFactory.StartNew(func).Unwrap().GetAwaiter().GetResult(); 
    } 
} 
: 여기

우리가 동기화 버전을 구현하기 위해 내부적으로 사용하는 코드가 안전하게 비동기 메소드를 호출하기 위해 그 동안이 사용 할 수있는 작업