我写了一个带FORM的DLL,放到主程序下面被调用,当关闭主程序后,资源管理器中主程序仍然在运行,需要在资源管理器里再将主程序关闭,为什么会出现这种情况,是因为我DLL里有对象没有释放掉? 我是这么写的: frmTest := nil;
try
frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
finally
FreeAndNil(frmTest);
end;
try
frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
finally
FreeAndNil(frmTest);
end;
调用完应该走 finally
FreeAndNil(frmTest);
end;
主程序的代码我是看不见的,
是动态调用
而是frmTest := nil; 接着直接FreeAndNil(frmTest);这样是不对的吧
try
if not Assigned(frmTest) then frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
finally
FreeAndNil(frmTest);
end;
这样好些。
frmTest := nil;
FreeAndNil(frmTest);中间没有Create,会有问题吗
Application.createForm 第一个建立的FORM是哪一个?
2、在frmTest OnClose下写代码释放frmTest内所有资源
3、在frmTest OnClose下Action:=CaFree;三个方法,我没测过,你自己试一下,测完记得把结果发上来