TADOStoredProc异步执行怎么得到是否执行完毕?

zly1980 2009-03-19 01:41:37
一个线程使用一个ADOStoredProc1执行一存储过程,如果设置了ADOStoredProc1->ExecuteOptions=TExecuteOptions()<<eoAsyncExecute;
后,对于调用ADOStoredProc1->ExecProc();的线程来说是立即通过了的,但是这个时候存储过程并没有真的完成,那么当存储过程完成后,通过事件返回还是需要自己去判断某些对象的状态?
我将ADOStoredProc1的所有事件都写了代码,加上断点,ADOStoredProc1对应的CONNECTION对象也所有事件都写了代码,测试得到的结果是:只要异步执行,没有完成的事件被触发.
存储过程是很简单的SQLSERVER2000的:
CREATE PROCEDURE sp_test
AS
WAITFOR delay '00:00:13'
GO

哪位有异步调用经验可否说说?非常感谢!
我实际的需求是:一个线程执行存储过程的时候,如用户设了TIMEOUT限制,在规定的时间内如果存储过程没有执行完,这个线程可以自己检测到超时,如果不采用异步执行,那么在执行期间线程会挂死,不希望出现挂死的情况.
...全文
48 点赞 收藏 5
写回复
5 条回复
yangangs 2009年03月26日
有点难度啊
回复 点赞
stevenjscn 2009年03月20日
多线程之间需用到同步。
回复 点赞
我不懂电脑 2009年03月19日
有窗口的情况下是有事件触发的。
回复 点赞
TripH0101 2009年03月19日
GZ
回复 点赞
zly1980 2009年03月19日
如果存储过程是
CREATE PROCEDURE sp_test
AS
declare @i int
while 1=1
begin
set @i=0;
end
GO
的话,超时属性是不生效的.
回复 点赞
发动态
发帖子
数据库及相关技术
创建于2007-08-02

707

社区成员

1.8w+

社区内容

C++ Builder 数据库及相关技术
社区公告
暂无公告