سلام دوستان
برخی برنامه ها لازمه که فقط یک بار اجرا بشن خصوصا برنامه هایی که با ای پی سروکار دارن یا برنامه هایی که برای کار با بانکهای اطلاعاتی نوشته شدن
این موضوع مهمی هست وقتی پروژ ه ای بصورت تجاری نوشته شده و به مشتری داده شده باید جلوی باگها و خطاهای اون گرفته بشه
در این پست از متدی ساده که ازاجرای مجدد برنامه جلوگیری میکنه بهتون اموزش میدم
در این روش از کلاس mutex استفاده کردم که لازمه هدر thread نیز به پروژه اضافه بشه
ابتدا در پروژه خود کلاس program.cs رو باز کنید.......
کدهای داخل کلاس main رو پاک کنید و کدهای زیر رو جایگزین کنید 
بجای appname نام پروژه خودتون بجاش بزارید
در این قطعه کد با استفاده از متغییر بولین که فقط درست یا غلط یا صفر و یک رو بررسی میکنه وضعیت اجرای برنامه را تحت کنترل داره


 static void Main()
        {
            bool runiing;
            System.Threading.Mutex mtx = new System.Threading.Mutex(true,"appname",out runiing);
            if (!runiing)
            {
                MessageBox.Show("برنامه در حال اجرا میباشد");
            }
            else
            {
                Application.Run(new Form1());
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

        }
این هم روش دوم که بنظم امنیتش بالاتره بخاطر استفاده از کلید
static void Main()
        {
            Mutex mutex = new Mutex(false, appGuid);
            if (!mutex.WaitOne(0, false))
            {
               MessageBox.Show("برنامه در حال اجرا میباشد");
return; } GC.Collect(); Application.Run(new Form1()); GC.KeepAlive(mutex); } private static string appGuid = "f2r5f-d02fs2-f9hxGd-05Hs2s";