[英]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.