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