专业服装进销存批发收银管理软件

当前位置: 主页 > 系统更新 > 内核更新 >

异步操作时,操作不能被执行

时间:2019-05-28 14:06
19-5-28 问题描述: 客户端执行转费资源的命令时,会造成sqlserver,长时间执行。如果客户中止,再重新连, 服务程序会保留该线程,重新取一个adoconnection。 保留的线程会一直等待sqlserver返
19-5-28

问题描述:

客户端执行转费资源的命令时,会造成sqlserver,长时间执行。如果客户中止,再重新连,
服务程序会保留该线程,重新取一个adoconnection。

保留的线程会一直等待sqlserver返回结果。有时候是不会有结果,但SQLSERVER会一直占用CPU.
服务程序关闭也会出现: 异步操作时,操作不能被执行。的错误。adoconnectio.connect:=false; adoconnection.close;都不能暂停该ADO线程。
服务程序的连接显示数也会比实际的在线数多出一个。直至该线程完全执行或捕捉到异常。


解决办法:

关闭服务程序或在F3界面中,提供一个关闭所有ADO连接池的功能。
该功能可以强制关闭所有连接,包含正在等待执行结果的连接。不会造成系统关闭异常。或一直占用CPU等问题。




2、

网络断线重连:

问题描述,客户端显示查询等待窗口,如果关闭服务程序,显示网络中断,客户端点中止,会造成界面死锁:





解决办法:上图为线程在重连的片断,重连时进入临界,等待界面中止,也要操作TCP。也要进入临界,updateform切换到主线程,
中止又要进入临界,所以会造成死锁,把UPDATEFORM(客户显示离线状态)功能,转移到 离开临界后再执行,就解决该问题。
------分隔线----------------------------