SignalR OnConnected() 中的异步方法

SB2*_*055 3 .net c# asynchronous signalr

我有以下内容:

    public override Task OnConnected() {
        HandleConnectionAsync(Context).Wait();
        return base.OnConnected();
    }
Run Code Online (Sandbox Code Playgroud)

在遵循“不阻止集线器方法”的指导时,我试图等待我的HandleConnectionAsync呼叫,但如果我使用async,我最终会得到以下结果:

    public override async Task OnConnected() {
        await HandleConnectionAsync(Context);
        await base.OnConnected();
    }
Run Code Online (Sandbox Code Playgroud)

但我不会返回任何东西。这样做的正确方法是什么?

Ste*_*ary 5

但我不会返回任何东西。这样做的正确方法是什么?

您不需要返回任何东西。async Task是 (synchronous) 的异步等价物voidTask意味着没有返回值,因此您的代码已经正确。

换句话说:将为您async构造返回的Task/ 。因此,Task<T>如果您的方法没有async如第一个示例中所示),您需要返回一个任务;但如果你的方法确实async(如你的第二个例子),那么你就没有。