“MetaTrader已停止工作”,求解!!!

 

最近遇到了这个问题:

 MT4客户端调用dll(VC++)进行socket通信(获取数据并显示在图表之上),在dll接口函数里开了一个线程等待并接收数据(当套接字有数据到来时,接收数据并返回给MT4客户端),当把图表窗口关闭以后,如果发送端继续发送数据,此时MT4客户端就会出现如下情况:

 

  

 

 当把图表窗口关闭,MT4的MQL程序(脚本或EA)执行结束,但其调用的dll接口函数所开的线程并没有退出, 如果此时发送端再与该线程通信,就会出现以上情况;若能在图表窗口被关闭之前退出该线程,就不会导致MT4客户端崩溃。问题在于图表窗口被关闭之前,MT4客户端能否做到通知dll所开线程退出?即有没有对图表窗口关闭事件的响应?

原因: