线程中使用ADO,关机时异常,是什么原因(100)

  • 主题发起人 主题发起人 dspack_nonono
  • 开始时间 开始时间
D

dspack_nonono

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在线程中使用ADO要注意什么呢?unit Unit2;interfaceuses Classes;type Fxxx = class(TThread) private Fado:Tadoconnection; protected procedure Execute; override; end;implementationprocedure Fxxx.Execute;begin // Fado:=Tadoconnection.create(nil); //然后执行一个SQL try while not self.Terminated do begin sleep(5); //执行SQL //10分钟后,FREE这个FADo,然后再.create,再连接MSSQL end; finally FADO.free; end;end;end. 我的使用目的就是:线程开始时,就创建FADO,连接并开始处理工作,每过10分钟就断开并销毁FADO,然后再创建FADO,连接并开始处理工作,我如上的方式,经常出现一个严重的问题,程序运行10分钟以上,点关机(WINDOWS2000),关不了机,WINDOWS关不了我的这个程序。我不知道是什么原因。因为我的程序需要始终连接着MSSQL,工作很频繁。程序和MSSQL又不在一个电脑上。始终用一个FADO可行吗?如果运行时间达几天,这一个连接会稳定吗?如果MSSQL的服务器重新启动了,那怎么办?所以想每10分钟重新连接一次,可却关不了机。请请教。
 
能不能保证你的线程只有一个实例,会不会因异常造成多个实例在抢资源
 
CoInitializeEx(nil, COINIT_APARTMENTTHREADED); try finally CoUninitialize; end;多线程访问数据库要做一个这样的保护
 
退出程序时, 要保证线程资源释放...
 
“能不能保证你的线程只有一个实例,会不会因异常造成多个实例在抢资源”是的目前只有一个线程也发生不能关机的情况,多线程也是如此。“ CoInitializeEx(nil, COINIT_APARTMENTTHREADED); try finally CoUninitialize; end;多线程访问数据库要做一个这样的保护”这个我已使用,由于目前我只用一个线程,所以问题不在于此。没有得到解决方法,,等待。
 
后退
顶部