Почему существуют версии async и sync UserManagerExtensions (например, CreateLocalUser и CreateLocalUserAsync), но только методы async для RoleManagerExtensions? Как я могу добавить пользователя к роли из моего старого кода? Существует только AddUserToRoleAsync, и я запускаю его синхронно. AddUserToRoleAsync (userId, role) .Result зависает и .ConfigureAwait (false) ничего не делает.ASP.NET-идентификатор async vs sync issues
2
A
ответ
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();
}
}