اطلاعیه

Collapse
No announcement yet.

استفاده از حلقه در سی شارپ

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    استفاده از حلقه در سی شارپ

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


    توی تابع خود کلید این حلقه رو گذاشتم ولی هیچ کاری انجام نمیشد

    #2
    پاسخ : استفاده از حلقه در سی شارپ

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


    توی تابع خود کلید این حلقه رو گذاشتم ولی هیچ کاری انجام نمیشد
    یه راه اینه که یه متغیر تعریف کنی و با زدن دکمه توقف مقدار متغیر را مثلا 1 کنی و با چک کردن متغیر در حلقه بررسی بشه که حلقه ادامه داشته باشه یا نه
    یه راه بهتر استفاده از مالتی تریدینگ هست که دقیق تر عمل می کنه

    کد راه حل اول:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace TestLoop
    {
    public partial class Form1 : Form
    {
    bool flag = false;
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    flag = false;
    Loop();
    }

    private void button3_Click(object sender, EventArgs e)
    {
    Application.Exit();
    }

    private void Loop()
    {
    int i = 0;
    for (i = 0; i <= 100000; i++)
    {
    if (flag) break;
    this.label1.Text = i + "";
    Application.DoEvents();
    System.Threading.Thread.Sleep(10);
    }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button2_Click(object sender, EventArgs e)
    {
    flag = true;
    }
    }
    }



    کد راه حل دوم:
    using System;
    using System.ComponentModel;
    using System.Windows.Forms;

    namespace TestLoop
    {
    public partial class Form1 : Form
    {
    //bool flag = false;
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    //flag = false;
    //Loop();
    this.backgroundWorker1.RunWorkerAsync();
    }

    private void button3_Click(object sender, EventArgs e)
    {
    Application.Exit();
    }

    private void Loop()
    {
    int i = 0;
    for (i = 0; i <= 100000; i++)
    {
    //if (flag) break;
    //this.label1.Text = i + "";
    if (this.backgroundWorker1.CancellationPending) break;
    this.Invoke((MethodInvoker)delegate { label1.Text = i + ""; });
    Application.DoEvents();
    System.Threading.Thread.Sleep(10);
    }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button2_Click(object sender, EventArgs e)
    {
    //flag = true;
    this.backgroundWorker1.CancelAsync();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    Loop();
    }
    }
    }

    جدیدترین ویرایش توسط hamzehh; ۲۲:۲۵ ۱۳۹۹/۰۱/۱۲.

    دیدگاه

    لطفا صبر کنید...
    X