19-5-28 问题描述: 客户端执行转费资源的命令时,会造成sqlserver,长时间执行。如果客户中止,再重新连, 服务程序会保留该线程,重新取一个adoconnection。 保留的线程会一直等待sqlserver返回结果。有时候是不会有结果,但SQLSERVER会一直占用CPU. 服务程序关闭也会出现: 异步操作时,操作不能被执行。的错误。adoconnectio.connect:=false; adoconnection.close;都不能暂停该ADO线程。 服务程序的连接显示数也会比实际的在线数多出一个。直至该线程完全执行或捕捉到异常。 解决办法: 关闭服务程序或在F3界面中,提供一个关闭所有ADO连接池的功能。 该功能可以强制关闭所有连接,包含正在等待执行结果的连接。不会造成系统关闭异常。或一直占用CPU等问题。 2、 网络断线重连: 问题描述,客户端显示查询等待窗口,如果关闭服务程序,显示网络中断,客户端点中止,会造成界面死锁: 解决办法:上图为线程在重连的片断,重连时进入临界,等待界面中止,也要操作TCP。也要进入临界,updateform切换到主线程, 中止又要进入临界,所以会造成死锁,把UPDATEFORM(客户显示离线状态)功能,转移到 离开临界后再执行,就解决该问题。 |