在SignalR中心,我是这样的:
public class MyHub : Hub
{
public override Task OnConnected()
{
// my async code here
return base.OnConnected();
}
}
我想执行异步代码。所以我添加了async
这样的关键字:
public class MyHub : Hub
{
public override async Task OnConnected()
{
var result = await MyAsyncMethod();
return base.OnConnected();
}
}
但return base.OnConnected();
显示此错误:
由于MyHub.OnConnected()是一个返回
Task
的异步方法,a 返回的关键字后面不能跟一个对象表达式。你是否 打算返回Task<T>
?
我该如何解决?感谢。
答案 0 :(得分:10)
编译器将async
方法转换为状态机。你不能return
Task
这里,因为返回的Task
是由编译器生成的,代表了此方法的 continuation 。
简单await
base
来电:
public override async Task OnConnected()
{
var result = await MyAsyncMethod();
await base.OnConnected();
}