调试多线程程序退出时出现等等的问题(300分)

  • 主题发起人 主题发起人 qdyoung
  • 开始时间 开始时间
Q

qdyoung

Unregistered / Unconfirmed
GUEST, unregistred user!
一个Exe程序A.exe监听一个TCP端口,并加载有另一个DLL B.dll。
调试时如果是直接运行A.exe,则能正常退出;
如果是是调试的B.dll,(Host Application为A.exe),则退出时出现等待,
显示Event Log窗口可以看到,退出时有几百个线程不断Start然后Exit,Threads窗口也可以看到不断闪烁刷新。这时Delphi7进程CPU占用几乎100%,A.exe进程CPU占用很少。
等5-10秒左右退出后倒是一切正常,没其它毛病。
 
B.DLL你做了什么事?
 
DLL返回一个接口实例给Exe:
function RegisterPlugin: IInterface;
begin
Result := TPluginInDll.Create;
end;
 
“几百个线程不断Start”,不太明白。
 
应该是线程没有执行完
 
首先你要确定你在退出程序前,应该向所有线程发送退出指令,其次,线程退出后注销dll,最后退出系统,这样应该没问题。
 
问题解决, 线程是Exe中的控件创建的, 调试和运行时不同
 
后退
顶部