0
在我的SignalR2集線器中,我添加了一個將從客戶端調用的異步方法StartMyTask()以及OnConnected()方法。然而,每當OnConnected執行它從來沒有連接到集線器(或返回base.OnConnected())從來沒有被擊中:SignalR異步任務
樞紐:
public override Task OnConnected()
{
StartMyTask().Wait(); // add stuff to db here
return base.OnConnected();
}
static async Task StartMyTask()
{
await Task.Run(() =>
{
Thread.Sleep(10);
});
}
- 爲什麼我無法連接?當我使StartMyTask不是一項任務時,它可以工作。
- 我假設如果我不想等到數據庫寫入,我會刪除Wait() - 是否正確?如果連接發生並且DB之後寫入,這會導致任何問題嗎?
等待是不行的,因爲我調用這個從OnConnected(不異步方法)。 StartMyTask() - 沒有等待()關鍵字的作品,但你預先在OnConnected退出後將任何問題保存到數據庫嗎? - 我的意思是這個工作...所以如果我已經連接,我的信息稍後保存 – BobSwanson
也是,StartMyTask()與TaskT = StartMyTask()相同? – BobSwanson
@BobSwanson:就像我在回答中所做的那樣,使它成爲'async',然後'await'就可以工作。 –