نوشته های یک برنامه نویس

تجربیات شخصی محمد باقری نسب
محمد باقری نسب

نوشته های یک برنامه نویس

تجربیات شخصی محمد باقری نسب

ترفند: اجرای تنها یک نمونه از برنامه (Single-Instance)

پیش نیاز: تسلط به زبان #C دات نت

یکی از چالش هایی که ممکنه در تولید یک نرم افزار بهش برخورد کنید اینه که چطور میشه یک برنامه رو فقط یک بار اجرا کرد؟ به این مفهوم که وقتی برنامه باز شد، دیگه به هیچ وجه نشه یک نمونه دیگه از برنامه رو هم در کنارش اجرا کنیم. مثل برنامه Windows Media Player که تنها یک نمونه از اون روی ویندوز قابل اجرا کردنه و تنها همون یک پروسه مسئول پخش تمامی فایلهای مالتی مدیا بر روی ویندوز شما هست.


جهت اجرای برنامه بصورت Single-Instance در دات نت میتونید از کلاس Mutex استفاده کنید:


private static bool IsAlreadyRun
{
    get
    {
        bool mFlag;
        mMutex = new Mutex(true, "MUTEX_PROJECT_NAME", out mFlag);

        if (!mFlag)
        {
             mMutex.Close();
             return true;
        }
        
        return false; 
    }
}


در کد بالا ابتدا یک Mutex با نام دلخواه ایجاد کردیم. در صورتی که این Mutex قبلا بر روی ویندوز موجود و در حال اجرا باشه، متغییر خروجی mFlag که بعنوان پارامتر سوم ارسال کردیم، با مقدار False پر خواهد شد و به این مفهوم هست که یک نمونه از برنامه شما هم اکنون در حال اجراست و امکان ایجاد Mutex جدید با این نام وجود نخواهد داشت. حالا شما میتونید در برنامه خودتون خصیصه ی IsAlreadyRun که در کد بالا نوشتیم رو بررسی کنید و در صورتی که مقدار برگشتی True بود، برنامه در حال اجراست و باید جلوی اجرای مجددش رو بگیرید. مثال:


[STAThread]
public static void Main()
{
    if (IsAlreadyRun)
        return;
        
    ...
}


امیدوارم این ترفند برای شما مفید بوده باشه، سوال یا مشکلی بود کامنت بذارید حتما پاسخ میدم؛ موفق باشید!

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
تجدید کد امنیتی
این سایت رو تنها به دلیل علاقم به نوشتن و به اشتراک گذاری تجربیاتم با دیگران ایجاد کردم و هر از گاهی اگر فرصت کنم می‌نویسم شاید به درد کسی بخوره، پس کپی برداری از محتوا بدون ذکر منبع هیچ اشکالی ندارد! اما اگر ذکر کردین هم خوشحالم می‌کنید 😊️
آخرین نظرات
  • ۲۴ شهریور ۹۶، ۱۱:۱۱ - دانلود آهنگ جدید
    عالی
دسته بندی ها