注销时不会触发Quickfixn OnLogout

时间:2017-01-23 10:08:41

标签: quickfix quickfixn

我在quickfixn github页面上的示例Tradeclient上写了一个交易应用程序。它现在经过大量修改,但是关于登录和关闭它没有改变。我现在遇到的问题是,当按下注销按钮时,它会调用Initiator.Stop,但它不会按照预期的那样进入OnLogout。登录时,它会执行所有操作,即init.start,然后是OnCreate,然后是OnLogon,但在注销时,不会触发OnLogout。任何想法可能是什么问题?

    private void Disconnect(object ignored)
    {
        Trace.WriteLine("ConnectionViewModel::Disconnect called");
        _qfapp.Stop();
    }

    public void Stop()
    {
        Trace.WriteLine("QFApp::Stop() called");
        Initiator.Stop(true);
    }

    public void OnLogout(QuickFix.SessionID sessionID)
    {
        // not sure how ActiveSessionID could ever be null, but it happened.
        string a = (this.ActiveSessionID == null) ? "null" : this.ActiveSessionID.ToString();
        Trace.WriteLine(String.Format("==OnLogout: {0}==", a));

        if (LogoutEvent != null)
        {
            LogoutEvent();
        }
    }

1 个答案:

答案 0 :(得分:0)

这与DumbCoder here的答案相同。 Initiator.Stop(true);将停止启动器引擎,以便断开所有会话。这意味着没有更多会话要退出。

每个this answer您希望首先使用

注销会话
Session.lookupSession(sessionID).logout();

然而,根据格兰特的评论,那是不寻常的事情。我的猜测是onLogout()功能实际上是在客户端会话退出接受器时捕获,但接受器本身仍在运行。对发起人而言并非如此。