首页 文章

使用Task.FromResult创建异步操作

提问于
浏览
0

请考虑以下操作方法:

[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 类,在类中调用Web服务 . 我想将我的控制器更改为异步模式 . 这是正确的使用Task.FromResult并返回任务然后等待它吗?这是异步吗?

1 回答

  • 0

    不,这根本不是异步的 .

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

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

    只要没有提供过载就没有多少你可以做的实际上有一个异步操作 .

相关问题