一些顺序的SignalR调用被删除

时间:2013-04-09 21:55:02

标签: c# signalr signalr.client

在我们的应用程序中,客户端软件正在使用SignalR的.NET客户端库。两个几乎完全相同的调用,但只执行第一个调用。

一个对象进行以下调用:

AddSubscription(typeof(ObjA).Name);
AddSubscription(typeof(ObjB).Name);

AddSubscription()在其父级上实现:

_subscribedTypes.Add(type);
_realtimeClient.Invoke("Subscribe", type);

在这种情况下,客户端调用是SignalR客户端的IHubProxy的包装器,它返回与IHubProxy.Invoke()相同的任务。 _realtimeClient本身最终是在整个应用程序中共享的静态客户端实例。在此之前,我们对调用或订阅服务器发送的事件没有任何问题。

无论出于何种原因,只有第一个AddSubscription会通过。如果我交换它们,那么现在首先将通过它。如果我单步执行,它们都会执行。

什么可能阻止这些直接连续执行?

编辑:我应该添加,当客户端实例是静态的时,它的方法或属性都不是。

1 个答案:

答案 0 :(得分:2)

等待异步方法调用完成以查看是否出现异常: _realtimeClient.Invoke(“订阅”,键入).Wait();

确保您订阅了所有活动,可能有错误事件

        var hubConnection = new HubConnection("http://url/");
        hubConnection.TraceWriter = Console.Out;
        hubConnection.Closed += () => Console.WriteLine("hubConnection.Closed");
        hubConnection.ConnectionSlow += () => Console.WriteLine("hubConnection.ConnectionSlow");
        hubConnection.Error += (error) => Console.WriteLine("hubConnection.Error {0}: {1}", error.GetType(), error.Message);
        hubConnection.Reconnected += () => Console.WriteLine("hubConnection.Reconnected");
        hubConnection.Reconnecting += () => Console.WriteLine("hubConnection.Reconnecting");
        hubConnection.StateChanged += (change) => Console.WriteLine("hubConnection.StateChanged {0} => {1}", change.OldState, change.NewState);