【发布时间】:2014-08-13 01:10:57
【问题描述】:
我有一个带有以下代码的 .NET SignalR 客户端:
IHubProxy proxy = objConnection.CreateHubProxy("stockTicker");
objConnection.Start().Wait();
Console.WriteLine(objConnection.ConnectionId);
问题是客户端在 30 秒后挂起,需要重新连接。解决方法是更改 Wait 方法:
IHubProxy proxy = objConnection.CreateHubProxy("stockTicker");
await objConnection.Start();
Console.WriteLine(objConnection.ConnectionId);
我看不出人们有理由在 SignalR 上或在其他一些情况下调用“等待”。有没有办法让被调用的代码(本例中为Start())知道它的调用方式?
这个想法是,对于不应该是Waited() 的用例,可以抛出异常。
【问题讨论】:
-
我会编写一个在这两种情况下都可以工作的代码,而不是检测它是如何被调用的......
-
我能想到的唯一方法是使用自定义等待(即不是
Task),但我认为这不是一个合理的解决方案。
标签: c# multithreading task-parallel-library signalr async-await