【发布时间】:2010-12-21 10:26:41
【问题描述】:
应该不可能运行我的应用程序的多个实例。因此项目源码包含:
CreateMutex (nil, False, PChar (ID));
if (GetLastError = ERROR_ALREADY_EXISTS) then
Halt;
现在我想以编程方式重新启动我的应用程序。通常的方法是:
AppName := PChar(Application.ExeName) ;
ShellExecute(Handle,'open', AppName, nil, nil, SW_SHOWNORMAL) ;
Application.Terminate;
但是由于互斥锁,这在我的情况下不起作用。即使我在启动第二个实例之前释放了互斥锁,它也不会起作用,因为关闭需要一些时间并且两个实例不能并行运行(因为公共资源和其他影响)。
有没有办法重新启动具有这些特征的应用程序? (如果可能,无需额外的可执行文件)
提前致谢。
【问题讨论】:
-
为什么要重新启动 - 只需激活已经运行的实例
-
怎么一样?正在运行的实例已经处于活动状态,我希望它重新启动。
-
你测试过'ReleaseMutex'的返回吗?
-
释放 不是您需要对互斥体执行的操作。而是关闭它。
标签: delphi delphi-2010 application-restart