Creating a Single Instance C# Application

This is something I find myself looking up alot so I decided to put it into a post for easy access, and for anyone else who might be looking for a solution.

using System.Threading;
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        { 

            bool createdNew = true;
            using (Mutex mutex = new Mutex(true, "SignleInstance", out createdNew))
            {
                if (createdNew)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                }
            }

        }
    }

Download Single Instance Application Source Code

I still don’t get why in Visual Studio in VB.NET one could click make single instance application, but that same feature doesn’t exist in C#? Don’t all .NET languages just get compiled to the CIL in the end?

1 comment

  1. It’s true that both C# and VB.NET compile to MSIL, but I doubt it has anything to do with the languages. Back in the days of VB6, there was a property to easily detect if another instance of your application was running (app.PrevInstance). VB.NET is not a derivative of VB6 and doesn’t support that property. My guess is that providing a VS template was part of Microsoft’s plan to ease the transition for VB6 developers.

    Using a mutex is the proper way to handle this and is almost certainly what’s happening under the hood in VB.

Leave a Reply