在caliburn微引导程序中,我可以注入已经运行的代码并关闭应用程序

时间:2014-01-03 15:46:14

标签: c# wpf caliburn.micro

我有以下代码段。

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)分支中的应用程序,是否有更好的地方注入此代码以确保应用程序只运行一次。

3 个答案:

答案 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()