修复重复启动的问题

This commit is contained in:
muqing 2024-07-19 15:58:15 +08:00
parent 4840715ef8
commit 8db0824659

View File

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection; using System.Threading;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.UI.Xaml; using Microsoft.UI.Xaml;
@ -11,6 +12,7 @@ using RustTools.Models;
using RustTools.Services; using RustTools.Services;
using RustTools.ViewModels; using RustTools.ViewModels;
using RustTools.Views; using RustTools.Views;
using System.Threading;
namespace RustTools; namespace RustTools;
@ -45,6 +47,11 @@ public partial class App : Application
public App() public App()
{ {
InitializeComponent(); InitializeComponent();
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("RustTools");//获取指定的进程名
if (myProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动
{
Exit(); //关闭系统
}
Host = Microsoft.Extensions.Hosting.Host. Host = Microsoft.Extensions.Hosting.Host.
CreateDefaultBuilder(). CreateDefaultBuilder().
@ -104,4 +111,27 @@ public partial class App : Application
await App.GetService<IActivationService>().ActivateAsync(args); 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();
//};
}
} }