加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

以编程方式重启Delphi应用程序

发布时间:2020-12-15 04:23:00 所属栏目:大数据 来源:网络整理
导读:不应该运行我的应用程序的多个实例.因此项目源包含: CreateMutex (nil,False,PChar (ID));if (GetLastError = ERROR_ALREADY_EXISTS) then Halt; 现在我想以编程方式重新启动我的应用程序.通常的方式是: AppName := PChar(Application.ExeName) ;ShellExec
不应该运行我的应用程序的多个实例.因此项目源包含:
CreateMutex (nil,False,PChar (ID));
if (GetLastError = ERROR_ALREADY_EXISTS) then
  Halt;

现在我想以编程方式重新启动我的应用程序.通常的方式是:

AppName := PChar(Application.ExeName) ;
ShellExecute(Handle,'open',AppName,nil,SW_SHOWNORMAL) ;
Application.Terminate;

但是由于互斥锁,这在我的情况下不起作用.即使我在启动第二个instace之前释放互斥锁也无法工作,因为shutdown需要一些时间并且两个实例不能并行运行(因为常见的资源和其他影响).

有没有办法重新启动具有这些特征的应用程序? (如果没有额外的可执行文件可能)

提前致谢.

解决方法

也许你应该跳出框框思考.您可以简单地创建另一个可执行文件,等待您的应用程序关闭然后再次启动它,而不是使用互斥锁/实例逻辑.作为一个额外的好处,您可以稍后使用此机制,例如,更新您的一些主应用程序的二进制文件.它也更容易运行升级而不是在同一个应用程序内维护不同的完整性级别等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读