Z zhujianzhou Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #1 我写了一个应用程序,在应用程序启动时启动两个线程,该线程包括一个ADOQuery对象和一个 自己写的类对象,但是为什么在应用程序关闭时总是提示我异步执行时,该操作不允许的错误提示
F fuhaiwen Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #3 你在应用程序的关闭中加入application.Terminate;试试,Terminate对所有进程进行控制; 如不行,我试试后再告诉你。
K kevincsg Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #4 你应该在程序关闭时,把线程的资源释放.设线程terminate可以,如果还不行的话,用closehandle()就可以 关闭相应的线程
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #5 没碰见过,关注一下。 另外下面问题中你的问题,我已回答(不全,请包涵): http://www.delphibbs.com/delphibbs/dispq.asp?lid=750068
智 智者乐水 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #6 procedure TForm1.Button1Click(Sender: TObject); var H:THandle; PWORD; begin H:=FindWindow(nil,'无标题 - 记事本'); if H<>0 then begin GetWindowThreadProcessId(H,@P); if P<>0 then TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF); end; end;
procedure TForm1.Button1Click(Sender: TObject); var H:THandle; PWORD; begin H:=FindWindow(nil,'无标题 - 记事本'); if H<>0 then begin GetWindowThreadProcessId(H,@P); if P<>0 then TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF); end; end;
Z zhujianzhou Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-11 #7 上述回答好像都不太安全,我自己试试其他的方法但发现好像有内存泄漏的事情, 执行几次以后就会出错,不行啊
S system_owen Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-11 #8 使用API TERMINATEtHREAD
N netup Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-11 #10 这应该是你的数据库线程所影起的问题, 你可以先试着不加数据库线程, 就应不会有这 样的问题, 如果这样, 那你的程序应不会每次都出错, 除非你的数据库线程, 总是在跑, 记住应确保数据库线程的数据处理任务完成后才能终止此线程, 否则, 一定出错, 其它 的线程你关不关应不会出错, 因为主线程OVER时会自动去KILL IT.
这应该是你的数据库线程所影起的问题, 你可以先试着不加数据库线程, 就应不会有这 样的问题, 如果这样, 那你的程序应不会每次都出错, 除非你的数据库线程, 总是在跑, 记住应确保数据库线程的数据处理任务完成后才能终止此线程, 否则, 一定出错, 其它 的线程你关不关应不会出错, 因为主线程OVER时会自动去KILL IT.
J jmlwz Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-02 #11 线程名.Suspend 停止 线程名.Resume 开始
A ASDC Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-05 #12 不知楼主的两个线程里面是否用的循环。 如果里面是循环处理的话,设置一个全局变量quitFlag。 初始化quitFlag为False; 在执行关闭应用程序时先置quitFlag为True,然后判断quitFlag为False时应用程序关闭。线程里判断quitFlag为True时线程退出,线程退出时将quitFlag置为False。 哦,如果两线程,还得用两变量。 因为线程进行数据库操作,建议不要强行退出。
不知楼主的两个线程里面是否用的循环。 如果里面是循环处理的话,设置一个全局变量quitFlag。 初始化quitFlag为False; 在执行关闭应用程序时先置quitFlag为True,然后判断quitFlag为False时应用程序关闭。线程里判断quitFlag为True时线程退出,线程退出时将quitFlag置为False。 哦,如果两线程,还得用两变量。 因为线程进行数据库操作,建议不要强行退出。
A Airenzheng Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-24 #13 如果连歌线程同时操作数据库,每个线程要对应一个链接,两个线程同时操作就会出现异步操作错误; 程序关闭时,如果线程还在运行,那就要先关闭撤销线程。 Procedure KillThread; procedure TThreadName.KillThread; begin TerminateThread(QT_Handle,ExitCode); end; QT_Handle:该线程的句柄,ExitCode味Dword类型(两个都是自定义变量)
如果连歌线程同时操作数据库,每个线程要对应一个链接,两个线程同时操作就会出现异步操作错误; 程序关闭时,如果线程还在运行,那就要先关闭撤销线程。 Procedure KillThread; procedure TThreadName.KillThread; begin TerminateThread(QT_Handle,ExitCode); end; QT_Handle:该线程的句柄,ExitCode味Dword类型(两个都是自定义变量)