作为标题状态,我想制作一个单实例程序并在启动另一个实例时显示 MainWindow。我已经实现了显示只允许一个实例的消息。
public class MyApplication
{
static Mutex mutex = new Mutex(true, "FirstInstance");
[STAThread]
public static void Main(string[] args)
{
if (mutex.WaitOne(TimeSpan.Zero, true))
{
App app = new App();
app.InitializeComponent();
app.Run();
}
else
{
MessageBox.Show("only one instance at a time");
}
}
}
这工作正常,但我想显示 MainWindow 而不是消息,所以我尝试了
static Application app;//change app to static
if (mutex.WaitOne(TimeSpan.Zero, true))
{
app = new App();
app.InitializeComponent();
app.Run();
}
else
{
app.MainWindow.WindowState = WindowState.Normal;
}
我得到“System.NullReferenceException:对象引用未设置为对象的实例”。似乎应用程序中的 MainWindow(它是静态的)为空,我不明白为什么。
所以我尝试了这篇文章http://sanity-free.org/143/csharp_dotnet_single_instance_application.html 但是 WndProc 方法在 WPF 中不存在。
如果您能帮助我,我将不胜感激。谢谢!