我对SignalR的官方文档有疑问 - Hubs API Guide - .NET Client。在 - 如何建立连接部分中。它写了以下内容:
Start方法异步执行。确保随后 在建立连接之前,代码行不会执行, 在ASP.NET 4.5异步方法中使用await或在.a中使用.Wait() 同步方法。不要在WinRT客户端中使用.Wait()。
有谁知道不打电话给Wait()的具体原因是什么?此外,当我有一个WinRT客户端,我与服务器hubProxy.Invoke()
通话时,这也适用吗?
感谢您的帮助!
答案 0 :(得分:4)
来自评论:
没有提到与异步或同步相关的内容 码。默认情况下代码WinRT是否异步,或者有什么东西 否则,我不知道或不理解?
在客户端UI应用程序(包括WinRT)中,至少有两个不阻止的原因:
await
的情况; 后者对WinRT尤为重要,因为异步是普遍存在的。整个WinRT框架设计为"async all the way down",因此如果您在UI线程的任何位置使用task.Wait
或task.Result
,则很可能会造成死锁
对于服务器端ASP.NET应用程序,还有至少两个不阻止的原因:
您可能需要查看async-await
wiki中的链接列表,以获取更多阅读材料。