如何在其他任务中停止任务(线程)和释放?

时间:2014-03-09 14:08:51

标签: c#

如何在Main_Task中停止任务以及在Primary_numbers任务中释放任务,直到我将成为how_much_numbers? 请帮帮我,我不明白如何使用任务... 我不需要Gui冻结..我尝试使用锁定连接,但没有工作,并且无法移动我的表单... 这是代码:

  private void button1_Click(object sender, EventArgs e)
    {
        IsCanceled == false;
        Thread th = new Thread(new ThreadStart(Thread1));
        Thread th2 = new Thread(new ThreadStart(Thread2));
        th.start();
        th2.start();

    }

    private Task task1;
    int i=0;
    int number=0;

    void Thread1()
    {
        task1 = Task.Factory.StartNew(Main_Task);
        Task.WaitAll(new Task[] { task1}); 
    }
    void Thread2()
    {
      Task t3 = Task.Factory.StartNew(Primary_numbers);
      Task.WaitAll(new Task[] { t3 });
    }
    private void Primary_numbers()
    {
        int how_much_numbers = Convert.ToInt32(textBox3.Text);

        using (StreamWriter writer = new StreamWriter("prime_numbers.txt"))
        {
            while (i <= how_much_numbers)
            {

                    if (number!=0)
                    if (prime_num(number) == true)
                    {
                        writer.WriteLine(skaicius[i] + "");
                    }

                if (isCanceled == true)
                    break;
             //HERE I NEED TO RELEASE Main_Task
            } writer.Close();
        }

    }
    private void Main_Task()
    {
        int how_much_numbers = Convert.ToInt32(textBox3.Text);

        using (StreamWriter writer = new StreamWriter("random_numbers.txt"))
        {
            while (i <= how_much_numbers)
            {
                    Random rnd = new Random();
                    number = rnd.Next(1, 100000);
                    writer.WriteLine(number + "");

                if (isCanceled == true)
                    break;
               //HERE I NEED TO STOP TASK
                i++;
            }
            writer.Close();
        }
    }

0 个答案:

没有答案