现在有一个程序,比较大,单个exe有1.35M,程序在运行较长时间后再关闭会出现关不掉的情况,这时就必须得用系统的进程管理器来关闭程序,这个问题比较麻烦
下面是关闭的代码:
//-----关闭按钮的代码----
  Close;
  Application.Terminate;//窗体关闭事件代码
  ClientSocket.Close;
  ConfigFile.Free;
  FreeDB;
具体还有一些就不写了,都差不多
我想问一下我关闭程序的方法对不对,如果不对,那么正确且安全的关闭程序的方法是什么?如果是正确的,那么有什么方法可以彻底关闭程序我后来又改了一下
关闭按钮的代码改为
  Close;窗体关闭事件代码改为
  try
     //Free掉一些数据结构
  finally
     FreeAndNil(Self);
     Application.Terminate;
  end;  
但在执行到Application.Terminate;这句时报错
说实话FreeAndNil(Self);这句我用得比较鲁莽,也不知道对不对,就一股脑儿加上去了

解决方案 »

  1.   

    把该释放的资源都free掉,然后close就可以了,没必要想那么复杂把。
      

  2.   

    MARK
    我也不是很明白。希望有人讲一讲。
      

  3.   

    已经Close了主窗体,不必调用Application.Terminate;
    你删除试试
      

  4.   

    对于主窗体的Close delphi会自动调用调用Application.Terminate;
    所以运行Application.Terminate;肯定会报错的。
      

  5.   

    //-----关闭按钮的代码----
      Close;//窗体关闭事件代码,没必要写。
      

  6.   

    同意楼上,比如说如果有个线程正在运行的话,就应该先Terminate线程,再close程序;一般情况下不用显示调用Application.Terminate的。 愚见。。:)
      

  7.   

    可以这样试一试
    try//.............释放资源except
       Application.Terminate
    end;
    //////////////////////////////
    如果你非要关,而不关心释放资源是否会出现问题,就这样写吧
    不过不建议在OnClose里面写太多东西,容易出错。