我有以下代码检查我的应用程序是否已在运行:
K.learning_phase()
现在,在我的应用程序的某些方面,我使用
if (Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location)).Count() > 1)
{
MessageBox.Show("Multiple instances!");
Process.GetCurrentProcess().Kill();
}
偶尔,当应用程序重新启动时,我会收到上述IF语句中的消息。
我怎样才能防止这种情况发生? 我能否以某种方式确保我的所有进程都将在Application.Restart()之前关闭,或者我可以以某种方式确保当应用程序在Application.Restart()之后启动时它将不会看到之前的进程正在运行以便它不会抛出我消息框?
答案 0 :(得分:1)
如果为true,则可以使用标志,不检查进程
public static Restarting = false;
...
if( !Restarting && Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location)).Count() > 1)
{
MessageBox.Show("Multiple instances!");
Process.GetCurrentProcess().Kill();
}
...
Restarting = true;
Application.Restart();