Использовать Task.FromResult для создания асинхронного действия

Пожалуйста, рассмотрите этот метод действий:

[HttpPost]
public async Task RemoveUserFromGroups(string connectionId, List<string> groupNames, string pusherAddress)
{
    var onlineUser = OnlineUser.Instance;
    await OnlineBusiness.RemoveUserFromGroups(onlineUser.Id, onlineUser.CustomerId, onlineUser.IsTrader, connectionId, groupNames, pusherAddress);
}

и этот метод:

public static Task<bool> RemoveUserFromGroups(int userId, int customerId, bool isTrader, string connectionId, List<string> groupNames, string pusherAddress)
{
    return Task.FromResult(PusherBusiness.RemoveUserFromGroups(userId, customerId, isTrader, connectionId, groupNames, pusherAddress));
}

PusherBusinessКласс в библиотеке третьей стороны, который в классе вызывает веб-службу.
Я хочу изменить свой контроллер на асинхронный режим.правильно ли это использовать Task.FromResult и вернуть задание и потом ждать на нем?
Это асинхронность?

1 ответ

  1. Нет. Это совсем не асинхронно.

    Это будет выполняться синхронно, создать задачу, дождаться завершения задачи (которая завершается синхронно) и двигаться дальше, используя тот же поток.

    Для того, чтобы это было асинхронным, вам нужна какая-то фактически асинхронная операция там. Например, если RemoveUserFromGroupsвызывается веб-служба, она должна делать это асинхронно и предлагать RemoveUserFromGroupsAsyncили, по крайней Beginмере,/EndRemoveUserFromGroups.

    As long is doesn’t offer that overload there’s not much you can do to actually have an asynchronous operation.