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

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

  1. #1

    نحوه خروج از حلقه بینهایت و ترد

    سلام
    من در سی شارپ یک برنامه ویندوز فرم نوشتم که شامل حلقه بینهایت و thread هستش مشکلی که دارم اینه که وقتی رو دکمه اجرای حلقه یا thread کلیک میکنم برنامه هنگ میکنه و هیچ دکمه ای روی فرم قابل کلیک کردن نیست و خود فرم هم هنگ میکنه میخاستم بدونم آیا راه حلی هست که بدون پایین اومدن سرعت اجرای حلقه ها اشیای روی فرم و خود فرم هنگ نکنه ؟ که بتونم یه دکمه توقف حلقه روی فرم تعبیه کنم؟

  2. #2
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: نحوه خروج از حلقه بینهایت و ترد

    با سلام
    این متدها رو برای Start و Stop کردن ترد قرار میدید

    private static Thread thread;
    public void startProgress()
    {
    CheckForIllegalCrossThreadCalls = false;
    thread = new Thread(new ThreadStart(ShowfrmProgress));
    thread.Start();
    }
    public void endProgress()
    {
    thread.Abort();
    thread = null;

    }

    این هم به عنوان مثال از while هست:

    int i = 0;
    public void ShowfrmProgress()
    {
    while (true)
    {
    i = i + 1;
    this.Text = i.ToString();
    }
    }

    دکمه Start:

    private void btnStart_Click(object sender, EventArgs e)
    {
    startProgress();
    }

    دکمه Stop :

    private void btnStop_Click(object sender, EventArgs e)
    {
    endProgress();
    }

    با اینکار فرم هیچ هنگی نمیکنه

    میتونید از BackgrounWorker هم استفاده کنید
    قبلش خاصیت WorkerSupportsCancellation رو True کنید

    int i = 0;
    private void btnStart_Click(object sender, EventArgs e)
    {
    if (!backgroundWorker1.IsBusy)
    {
    backgroundWorker1.RunWorkerAsync();
    }
    }

    private void btnStop_Click(object sender, EventArgs e)
    {
    if (backgroundWorker1.IsBusy)
    {
    backgroundWorker1.CancelAsync();
    }
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    while (true)
    {
    if (backgroundWorker1.CancellationPending)
    {
    e.Cancel = true;
    return;
    }
    i = i + 1;
    //this.Text = i.ToString();
    }
    }

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    MessageBox.Show("Complete...");
    }


    موفق باشید
    آخرین ویرایش به وسیله danialafshari : سه شنبه 02 آبان 1396 در 05:08 صبح
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

  3. #3

    نقل قول: نحوه خروج از حلقه بینهایت و ترد

    ممنون اگه ما از ترد استفاده نکنیم و بخایم فقط یک حلقه بینهایت رو متوقف کنیم تنها راه استفاده از BackgrounWorker هستش ؟

  4. #4
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: نحوه خروج از حلقه بینهایت و ترد

    نقل قول نوشته شده توسط mohamad0098 مشاهده تاپیک
    ممنون اگه ما از ترد استفاده نکنیم و بخایم فقط یک حلقه بینهایت رو متوقف کنیم تنها راه استفاده از BackgrounWorker هستش ؟
    با سلام
    در حلقه بی نهایت بهتره از backgroundWorker یا Thread استفاده کنید
    حلقه while
    backgroundworker یک کلاس هست می تونید به صورت کد نویسی هم ازش استفاده کنید
    https://msdn.microsoft.com/query/dev...-.NETFramework
    موفق باشید
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

تاپیک های مشابه

  1. سوال: خروج از حلقه for
    نوشته شده توسط f_g1348 در بخش VB.NET
    پاسخ: 4
    آخرین پست: شنبه 16 اردیبهشت 1391, 17:27 عصر
  2. سوال: چطوری از حلقه بینهایت خارج بشیم ؟
    نوشته شده توسط mamali-mohammad در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 9
    آخرین پست: پنج شنبه 15 دی 1390, 11:22 صبح
  3. نحوه استفاده از حلقه هاي تكرار
    نوشته شده توسط iman2023 در بخش Access
    پاسخ: 6
    آخرین پست: شنبه 29 تیر 1387, 08:25 صبح
  4. خروج از حلقه While در هر مرحل از کار
    نوشته شده توسط ali_abbasi22145 در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: دوشنبه 22 آبان 1385, 21:31 عصر
  5. خروج از حلقه
    نوشته شده توسط maleknasab در بخش برنامه نویسی در 6 VB
    پاسخ: 9
    آخرین پست: سه شنبه 11 آذر 1382, 10:52 صبح

برچسب های این تاپیک

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

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