在 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(); 显示此错误:



我该如何解决?谢谢。

最佳答案

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

只需 await base 调用:

public override async Task OnConnected()
{
    var result = await MyAsyncMethod();
    await base.OnConnected();
}

关于c# - 如何在返回任务的方法中调用异步方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45974391/

10-09 19:05