如何正确创建单实例WPF应用程序?
大家好!我正在用C#编写一个WPF应用程序,遇到了一个问题:如果用户多次启动应用程序,会打开多个窗口,导致混乱和不必要的负载。我希望做到,当再次启动时,应用程序要么聚焦到已打开的窗口,要么显示程序已在运行的提示。
我尝试过使用`Process.GetProcessesByName`,但这不可靠,因为可能有多个同名进程。我在网上搜索过,找到了许多不同的方法——通过`Mutex`、`EventWaitHandle`、`NamedPipe`。我是新手,不明白哪种方法被认为是正确且安全的。
以下是我尝试修改的代码示例(App.xaml.cs):
```csharp
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
// 这里我想添加单实例检查
base.OnStartup(e);
}
}
```
请指教,谢谢。