簡體   English   中英

我可以在caliburn微型引導程序中的哪里注入已經運行的代碼並關閉應用程序

[英]Where in the caliburn micro bootstrapper can I inject already running code and close application

我有以下代碼片段。

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)分支中終止該應用程序,是否有更好的位置注入此代碼以確保該應用程序僅運行一次。

    protected override void OnStartup(object sender, StartupEventArgs e)
    {
        Application.Current.Shutdown();
    }

我這樣解決了。

protected override void StartRuntime()
{
    bool ok;
    var m = new System.Threading.Mutex(true, "Application", out ok);
    if (!ok)
    {
        Application.Current.Shutdown();
    }

    base.StartRuntime();
}

另一個選擇是在WPF(或其他任何方式)有機會初始化之前,先檢查程序的Main()方法。 如果檢查返回該應用程序可以啟動,則可以創建Application對象並將其設置為Run()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM