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