请考虑这个行动方法:
[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并返回任务然后等待它吗?
这是异步吗?
答案 0 :(得分:0)
没有。这根本不是异步的。
这将同步运行,创建任务,等待完成的任务(同步完成)并继续使用相同的线程。
为了使它成为异步,你需要一些实际的异步操作。例如,如果RemoveUserFromGroups
调用Web服务,它应该异步执行并提供RemoveUserFromGroupsAsync
或至少Begin
/ EndRemoveUserFromGroups
。
只要没有提供过载,你就无法实际进行异步操作。