نمایش نتایج 1 تا 9 از 9

نام تاپیک: نحوه جلوگیری از اجرای مجدد برنامه

  1. #1

    نحوه جلوگیری از اجرای مجدد برنامه

    وقتی برنامه در حال اجرا است چه طور می توان از اجرای مجدد آن جلوگیری کرد؟

  2. #2

    می تونین از کد زیر استفاده کنین


    [STAThread]
    staticvoid Main() // args are OK here, of course
    {
    bool ok;
    System.Threading.Mutex m = new System.Threading.Mutex(true, "YourNameHere", out ok);
    if (!ok)
    {
    MessageBox.Show("Another instance is already running.");
    return;
    }
    Application.Run(newForm1()); // or whatever was there
    GC.KeepAlive(m); // important!
    }
    آخرین ویرایش به وسیله علیرضا مداح : یک شنبه 23 تیر 1387 در 17:29 عصر

  3. #3
    از کد زیر هم می تونید در رویداد Form_Load فرم اصلی تون استفاده کنید

    Process cp= Process.GetCurrentProcess();
    Process[] p = Process.GetProcessesByName(cp.ProcessName);
    if (p.Length > 1)
    {
    MessageBox.Show("programe is run");
    Application.Exit();
    }


    البته روش پست قبلی بهتره.

  4. #4
    کاربر دائمی آواتار سار
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    تورین-ایتالیا
    پست
    1,044
    مکنه این دور روش رو مقایسه فنی بکنید؟

  5. #5
    فرقی که من متوجه شدم اینه که اگه از فایل exe ی که با کد پست من ایجاد شده ، چند تا کپی بگیری ، می توانید تک تک کپی ها را همزمان اجرا کنید ولی از هر کپی فقط یک نمونه از برنامه اجرا می شود.
    ولی فایل exe تولید شده توسط پست قبلی اینجوری نیست و کلا فقط یک نمونه از برنامه اجرا می شود.

  6. #6
    کاربر دائمی آواتار سار
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    تورین-ایتالیا
    پست
    1,044
    جالبه، یعنی کد شما به فایل بستگی داره ولی کد beh_develop که من هم تا کنون از آن استفاده می کردم به فایل فیزیکی بستگی نداره.
    حالا تو بخش VB.Net هم دوستمون shahrdar در این پست روش زیر رو پیشنهاد دادن

    Private Sub MyApplication_StartupNextInstance(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupN extInstanceEventArgs) Handles Me.StartupNextInstance
    e.BringToForeground = True
    End Sub

    و گفتن که :
    استاندارد ترین و منطقی ترین روش اینه
    از داخل My Project در قسمت Application دکمه View Application Events رو زده و از رویدادها ،رویدد startupnextinstance رو انتخاب کنید
    من همیشه از این کد استفاده میکنم
    تا حالا شد سه روش، شما اطلاعی در مورد این روش آخر دارید؟

  7. #7
    دقیقا سار عزیز ،تفاوتی که من پیدا کردم همین وابسته بودن به فایل مجری برنامه بود.
    خیر دوست عزیز. من اصلا معادل همچین مسیری را در #C پیدا نمی کنیم (View Application Events ) . شما تونستید این روش رو تست کنید؟

  8. #8
    کاربر دائمی آواتار سار
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    تورین-ایتالیا
    پست
    1,044
    نه متاسفانه.
    راستش من VB ندارم، فکر کردم مال اونه!!!!

  9. #9

    نقل قول: نحوه جلوگیری از اجرای مجدد برنامه

    روشی که در VB ذکر شد:
    e.BringToForeground = True
    با CheckBox:
    Make single instance application
    چه فرقی داره !!!؟

    آیا در #C معادل این CheckBox وجود داره؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •