繁体   English   中英

SignalR OnConnected()中的异步方法

[英]Async Method in SignalR OnConnected()

我有以下几点:

    public override Task OnConnected() {
        HandleConnectionAsync(Context).Wait();
        return base.OnConnected();
    }

在遵循有关“不要阻止集线器方法”的指导时,我试图等待HandleConnectionAsync调用,但是如果我使用async ,则会得到以下结果:

    public override async Task OnConnected() {
        await HandleConnectionAsync(Context);
        await base.OnConnected();
    }

但是后来我什么也没退。 什么是正确的方法?

但是后来我什么也没退。 什么是正确的方法?

您不需要返回任何东西。 async Task是(synchronous) void的异步等效项。 Task表示没有返回值,因此您的代码已经正确。

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

如果您await HandleConnectionAsync(Context); 在该部分结束之前,该方法不会返回。

如果您不想“阻止” hub方法,只需将Wait()部分移开:

public override Task OnConnected() 
{
    HandleConnectionAsync(Context);
    base.OnConnected();
}

这样,该方法将在HandleConnectionAsync完成之前立即返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM