我有以下代码段。
bool ok;
var m = new System.Threading.Mutex(true, "Application", out ok);
if (!ok)
{
MessageBox.Show("Another instance is already running.", ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString());
}
应检查应用程序是否已在运行。我试图把它注入
protected override void StartRuntime()
但不知道如何杀死if(!ok)
分支中的应用程序,是否有更好的地方注入此代码以确保应用程序只运行一次。
答案 0 :(得分:0)
protected override void OnStartup(object sender, StartupEventArgs e)
{
Application.Current.Shutdown();
}
答案 1 :(得分:0)
我这样解决了。
protected override void StartRuntime()
{
bool ok;
var m = new System.Threading.Mutex(true, "Application", out ok);
if (!ok)
{
Application.Current.Shutdown();
}
base.StartRuntime();
}
答案 2 :(得分:0)
另一种选择是检查程序的Main()
方法,甚至在给WPF(或其他)提供初始化的机会之前。如果检查返回应用程序可以启动,那么您创建Application
对象并将其设为Run()
。