Мне нужно реализовать собственный поставщик хранилища для aspnetidentity. У меня был хороший взгляд, и я нашел немало. Однако они кажутся мне неправильными.Асинхронный код, вводящий в заблуждение идентификатор aspnet
Мое недоразумение в том, что если у вас есть метод, который заканчивается на «асинхронный», чем он должен быть асинхронным.
См. Пример, взятый из чьего-то кода, и это разбросано повсюду.
Я найти ниже вводит в заблуждение, так как это не ASync вовсе не от того, что я могу видеть:
public Task<TUser> FindByIdAsync(int userId)
{
TUser result = userTable.GetUserById(userId) as TUser; //this is not async
if (result != null)
{
return Task.FromResult<TUser>(result);
}
return Task.FromResult<TUser>(null);
}
это должно кодироваться как это ?:
public async Task<TUser> FindByIdAsync(int userId)
{
TUser result = userTable.GetUserByIdAsync(userId) as TUser;
if (result != null)
{
return await Task.FromResult<TUser>(result);
}
return await Task.FromResult<TUser>(null);
}
Questions?
Правильно ли делать «Task.FromResult»? То, что я имею в виду, делает «Task.FromResult на самом деле превращается в синхронное? Какой она должна быть?
Что такое правильный способ кодирования выше? Насчет configureAwait (ложь) должна быть асинхронной» Все пути вниз, включая datalayer избежать запирания»
любого образец код/фрагмент кода будет оценен
большого спасибо за любую обратную связь
первый один только оборачивает синхронный вызов 'GetUserById' до * поддельный * это в асинхронном (по крайней мере, вы можете использовать его с ждать сейчас) - второй из них является абсолютно бесполезно, поскольку вы можете просто использовать 'userTable.GetUserByIdAsync' - вы просто распаковываете и переупаковываете его. – Carsten
Откуда берутся« GetUserByIdAsync »?Это действительно существует? Если это так, просто верните его результат в качестве Задачи. –
@PanagiotisKanavos Я добавил GetUserByIdAsync как пример сам из того, что, как мне кажется, должно быть – developer9969