簡體   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