Mutex implements singleton
using System; using System.IO; using System.Runtime.CompilerServices; using System.Reflection; using System.Diagnostics; namespace ConsoleApp19 { internal class Program { static void Main(string[] args) { TestMutexSingleton(); } static void TestMutexSingleton() { string name = Process.GetCurrentProcess().MainModule.ModuleName; using(Mutex mtx=new Mutex(false, name)) { if(!mtx.WaitOne(5000,false)) { Console.WriteLine($"{DateTime.Now.ToString("O")},An Instance of the Application {name} is Already Running!Enter any key to exit."); Console.ReadKey(); return; } Console.WriteLine($"{DateTime.Now.ToString("O")},{Process.GetCurrentProcess().MainModule.ModuleName},{Process.GetCurrentProcess().Id},{Thread.CurrentThread.ManagedThreadId}"); Console.ReadLine(); } } } }