Почему существуют асинхронные и синхронные версии UserManagerExtensions (например, CreateLocalUser и CreateLocalUserAsync), но только асинхронные методы для RoleManagerExtensions? Как я могу добавить пользователя в роль из моего устаревшего кода? Есть только AddUserToRoleAsync и у меня тупик при синхронном запуске. AddUserToRoleAsync(userId, role).Result зависает, и .ConfigureAwait(false) также ничего не делает.
Проблемы с асинхронной и синхронной идентификацией ASP.NET
Ответы (1)
Для выпуска 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();
}
}
person
Hao Kung
schedule
25.09.2013