修复重复启动的问题
This commit is contained in:
parent
4840715ef8
commit
8db0824659
|
@ -1,4 +1,5 @@
|
|||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System.Threading;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.UI.Xaml;
|
||||
|
||||
|
@ -11,6 +12,7 @@ using RustTools.Models;
|
|||
using RustTools.Services;
|
||||
using RustTools.ViewModels;
|
||||
using RustTools.Views;
|
||||
using System.Threading;
|
||||
|
||||
namespace RustTools;
|
||||
|
||||
|
@ -45,6 +47,11 @@ public partial class App : Application
|
|||
public App()
|
||||
{
|
||||
InitializeComponent();
|
||||
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("RustTools");//获取指定的进程名
|
||||
if (myProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动
|
||||
{
|
||||
Exit(); //关闭系统
|
||||
}
|
||||
|
||||
Host = Microsoft.Extensions.Hosting.Host.
|
||||
CreateDefaultBuilder().
|
||||
|
@ -104,4 +111,27 @@ public partial class App : Application
|
|||
|
||||
await App.GetService<IActivationService>().ActivateAsync(args);
|
||||
}
|
||||
|
||||
private Mutex mutex;
|
||||
private void InitializeMutex()
|
||||
{
|
||||
// Mutex name should be unique for your application.
|
||||
string mutexName = "Global\\MyWinUIAppMutex";
|
||||
bool createdNew;
|
||||
|
||||
// Try to create the Mutex. If it fails, another instance is already running.
|
||||
mutex = new Mutex(true, mutexName, out createdNew);
|
||||
if (!createdNew)
|
||||
{
|
||||
// Another instance is already running.
|
||||
Environment.Exit(0); // Exit the current application.
|
||||
}
|
||||
|
||||
// Clean up the Mutex when the application exits.
|
||||
//Current.Exiting += (sender, args) =>
|
||||
//{
|
||||
// mutex.Close();
|
||||
// mutex.Dispose();
|
||||
//};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user