我有以下内容:
public override Task OnConnected() {
HandleConnectionAsync(Context).Wait();
return base.OnConnected();
}
在遵循"不要阻止中心方法的指导下,我试图等待HandleConnectionAsync
来电,但如果我使用async
,我最终得到以下结论:
public override async Task OnConnected() {
await HandleConnectionAsync(Context);
await base.OnConnected();
}
但是我没有回复任何东西。什么是正确的方法?
答案 0 :(得分:3)
但是我没有回复任何东西。什么是正确的方法?
你不需要退货。 async Task
是(同步)void
的异步等价物。 Task
表示没有返回值,因此您的代码已经正确。
换句话说:async
将为您构建返回的Task
/ Task<T>
。因此,如果您的方法不具有async
(如第一个示例中所示),则需要返回任务;但是如果你的方法 有async
(如你的第二个例子),那么你就不会。
答案 1 :(得分:0)
如果你await HandleConnectionAsync(Context);
,该方法将不会返回,直到该部分结束。
如果你不想“阻止”集线器方法,只需远程Wait()
部分:
public override Task OnConnected()
{
HandleConnectionAsync(Context);
base.OnConnected();
}
这样,该方法将在HandleConnectionAsync
完成之前立即返回。