h:=createMutex(nil,false,'form1');
 if GetLastError() = ERROR_ALREADY_EXISTS then
 begin
      showmessage('程序已正在运行');
      application.Terminate; //终止程序
 end
 else
 begin
       Application.Run;
 end;这是一个只能允许一个程序的代码,我把application.Terminate改为close 结果有差别  求解释?

解决方案 »

  1.   

    application.Terminate; 
    --------------
    销毁有用程序  你打开的程序关闭了close
    --------------
    关闭窗口
      

  2.   

    任何地方调用application.Terminate都会关闭进程
    close关闭当前窗体,如果是主窗体,进程结束
      

  3.   

    Application.Terminate是告诉主程式,不管你在做什么,我都要走了。
    Close是Form的关闭事件,如果当前Form是程式的主窗口,则Close会调用Application.Terminate。
      

  4.   

    这种代码通常应该放在.dpr文件中,所以也不可能调用Close
    看你的代码,估计是写在Form中了,所以你才想调用Close这种做法是不严谨的,因为你把代码写在Form中
    这时Form是已经创建加载过了,显然是没有必要的,也增加了无谓的内存开销
      

  5.   

    Form的 close 是关闭窗体,  如果窗体是主窗体 就会退出.app.ter..  是关闭程序,  直接就退出
    另外  app .ter 是强制性的. 而close 会被 closequery  勾住.假设你捕获到异常必须中止程序,  但是你的程序关闭的时候有判断, 就只能用APP.Ter