如何在返回Task的方法中调用异步方法?

Ble*_*ter 4 c# async-await signalr

在SignalR中心我是这样的:

public class MyHub : Hub
{
    public override Task OnConnected()
    {
        // my async code here
        return base.OnConnected();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想执行异步代码.所以我添加了这样的async关键字:

public class MyHub : Hub
{
    public override async Task OnConnected()
    {
        var result = await MyAsyncMethod();
        return base.OnConnected();
    }
}
Run Code Online (Sandbox Code Playgroud)

return base.OnConnected();显示此错误:

由于MyHub.OnConnected()是一个返回的异步方法,因此返回Task的关键字后面不能跟一个对象表达式.你打算回来Task<T>吗?

我该如何解决?谢谢.

Ren*_*ogt 10

async编译器将方法转换为状态机.你不能returnTask这里,因为Task返回是由编译器生成的,代表了这个方法的延续.

简单awaitbase电话:

public override async Task OnConnected()
{
    var result = await MyAsyncMethod();
    await base.OnConnected();
}
Run Code Online (Sandbox Code Playgroud)