to 各位:
今天有时间好好测试了一回,最后发现问题出在Form1.Free上!
spidertong的有没有试过没有窗体的DLL?问的好!
DLL创建了线程后,ExitProcess时Form1.Free调用的DestroyWindow不成功,DELPHI
抛出一个异常,后续的代码会导致win9x出错(2000没事).只好用类似如下的形式了:
finalization
if Assigned(Form1) then
begin
try
Form1.Free;
except
end;
Form1 := nil;
end;
if Assigned(TestThread) then
begin
TerminateThread(TestThread.Handle);
CloseHandle(TestThread.Handle);
TestThread := nil;
end;
我对9x下的这种现象感到奇怪!
至于Sleep(0)或Delay过程来等待线程结束在我这个问题上并不适用,因为ExitProcess时
别的线程没有机会执行任何代码,等只能是死等(包括我原先用的WaitFor).