CTP4097或者8193错误,网上查找的办法在业务线程中重新认证登录即可,我的程序中自己设置了两个线程——行情线程和交易线程。当前置断开的时候,需要先释放资源再重新实例化对象并创建线程。
- 行情线程函数:该线程主要是链接行情前置机,利用Windows API 中的CreateEvent()函数创建xinhao句柄。在行情获取成功之后将该线程阻塞。
int MdThreadFun() ///行情线程 { //行情流文件 string g_chFrontMdaddr = getConfig("config", "FrontMdAddr"); cout << "g_chFrontMdaddr = " << g_chFrontMdaddr << "\n" << endl; CThostFtdcMdApi* pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi(".\\liu\\"); CSimpleMdHandler ash(pUserMdApi); ///实例化一个行情对象 pUserMdApi->RegisterSpi(&ash); pUserMdApi->RegisterFront(const_cast<char*>(g_chFrontMdaddr.c_str())); pUserMdApi->Init(); WaitForSingleObject(xinhao, INFINITE); ///等待链接行情源 ash.InstrumentRead(); ash.SubscribeMarketData(); ///订阅行情 WaitForSingleObject(xinhao, INFINITE); ///行情线程阻塞,如果断开连接,就结束线程,释放资源。 pUserMdApi->Rele