使用Task.FromResult创建异步操作

时间:2016-05-29 08:46:40

标签: c# asynchronous async-await

请考虑这个行动方法:

[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));
}

类中调用Web服务的第三方库中的PusherBusiness类。 我想将我的控制器更改为异步模式。这是正确的使用Task.FromResult并返回任务然后等待它吗? 这是异步吗?

1 个答案:

答案 0 :(得分:0)

没有。这根本不是异步的。

这将同步运行,创建任务,等待完成的任务(同步完成)并继续使用相同的线程。

为了使它成为异步,你需要一些实际的异步操作。例如,如果RemoveUserFromGroups调用Web服务,它应该异步执行并提供RemoveUserFromGroupsAsync或至少Begin / EndRemoveUserFromGroups

只要没有提供过载,你就无法实际进行异步操作。

相关问题