我在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();
}
}
答案 0 :(得分:0)
这与DumbCoder here的答案相同。 Initiator.Stop(true);
将停止启动器引擎,以便断开所有会话。这意味着没有更多会话要退出。
每个this answer您希望首先使用
注销会话Session.lookupSession(sessionID).logout();
然而,根据格兰特的评论,那是不寻常的事情。我的猜测是onLogout()功能实际上是在客户端会话退出接受器时捕获,但接受器本身仍在运行。对发起人而言并非如此。