Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Hubbroxy,长时间不开火_C#_Wpf_Signalr - Fatal编程技术网

C# Hubbroxy,长时间不开火

C# Hubbroxy,长时间不开火,c#,wpf,signalr,C#,Wpf,Signalr,我有一个wpf应用程序,它使用信号器连接。一切正常。但在长时间(例如10小时)hubproxy.on方法未触发后,服务器将数据正确发送到客户端的hubproxy.Invoke也正常工作,只有hubproxy.on不工作。没有连接错误或断开连接状态。它发生在生产环境中 这是我的客户代码 你能分享一些你试过的代码吗?嗨@awh112。很抱歉我没有及时回复。我用一些代码更新了帖子。假设这个方法(SendMessage)在serverHi上每分钟被调用数百次,我也有类似的问题。我的connection.

我有一个wpf应用程序,它使用信号器连接。一切正常。但在长时间(例如10小时)hubproxy.on方法未触发后,服务器将数据正确发送到客户端的hubproxy.Invoke也正常工作,只有hubproxy.on不工作。没有连接错误或断开连接状态。它发生在生产环境中

这是我的客户代码


你能分享一些你试过的代码吗?嗨@awh112。很抱歉我没有及时回复。我用一些代码更新了帖子。假设这个方法(SendMessage)在serverHi上每分钟被调用数百次,我也有类似的问题。我的connection.on回调第一次启动,然后停止工作。你找到解决办法了吗?
 public partial class MainWindow : Window
        {
            private IHubProxy hubProxy;
            private HubConnection connection;
            private string url = "http://localhost:8080/signalr";

        public MainWindow()
        {
            InitializeConnection();
            InitializeComponent();
        }

        private void InitializeConnection()
        {
            connection = new HubConnection(url);
            hubProxy = connection.CreateHubProxy("SignalRHub");
            connection.StateChanged += connection_StateChanged;
            hubProxy.On<string>("OnMessage", OnMMessage);
            connection.Start();
        }

        void connection_StateChanged(StateChange obj)
        {
            if (obj.NewState == ConnectionState.Disconnected)
            {
                InitializeConnection();
            }
        }

        private void OnMMessage(string message)
        {
            //This not works sometimes
            MessageBox.Show(message);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //this works always, is being logged on the server
            hubProxy.Invoke("SendMessage2", new object[1] { "dfdfdf" });
        }
    }
public class SignalRHub : Hub
{
    public Logger logger = new Logger();
    public void Subscribe()
    {
        SubscriberCache.Subscribers.Add(Context.ConnectionId);
    }

    public void UnSubscribe()
    {
        if (SubscriberCache.Subscribers.Contains(Context.ConnectionId))
            SubscriberCache.Subscribers.Remove(Context.ConnectionId);
    }

    public override Task OnDisconnected(bool stopCalled)
    {
        UnSubscribe();
        return base.OnDisconnected(stopCalled);
    }

    public override Task OnReconnected()
    {
        if (!SubscriberCache.Subscribers.Contains(Context.ConnectionId))
            SubscriberCache.Subscribers.Add(Context.ConnectionId);

        return base.OnReconnected();
    }

    public void SendMessage(string message)
    {
        //this works always
        logger.Info("message sending to client");
        Clients.All.OnMessage(message);

    }
}