-1
我想用c#構建一個實例WPF應用程序。我按照this answer創建以下應用程序。但是,無論我重新啓動相同的應用程序多少次(雙擊* .exe文件),OnStartupNextInstance函數都不會被調用。OnStartupNextInstance不會被調用
調試輸出中沒有任何例外或任何內容。
有沒有人有使用這種方法工作的單個實例WPF應用程序?我在這裏錯過了什麼?
using Microsoft.VisualBasic.ApplicationServices;
using System;
using System.Windows;
namespace WpfApp1
{
public class EntryPoint
{
[STAThread]
public static void Main(string[] args)
{
var man = new SingleInstanceManager();
man.Run(args);
}
}
public class SingleInstanceManager : Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
{
public SingleInstanceManager()
{
IsSingleInstance = true;
}
protected override bool OnStartup(Microsoft.VisualBasic.ApplicationServices.StartupEventArgs eventArgs)
{
MessageBox.Show("First time launch");
var app = new App();
app.InitializeComponent();
app.Run();
return false;
}
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
{
MessageBox.Show("Subsequent launch");
base.OnStartupNextInstance(eventArgs);
eventArgs.BringToForeground = true;
}
}
}
在你的鏈接中,它建議使用'public void Activate()'方法來激活MainWindow(並在OnStartupNextInstance中調用它),這可能是相關的嗎?你也可以嘗試在OnStartupNextInstance的第一行放置一個斷點,並檢查調試模式,如果你的代碼到達那裏。 –
你確定你正在調試正確的實例嗎? 'OnStartupNextInstance()'方法僅在原始進程中調用,而不是新進程。注意'MessageBox.Show()'。您應該看到該消息框啓動後續實例,並且您發佈的代碼中沒有任何內容會提示發生任何不同的事情。你確定你發佈的代碼實際上是你正在運行的代碼嗎? –
@KeyurPATEL WPF應用程序沒有激活功能:( – Believe2014