0

How I can stop task in Main_Task and when release in Primary_numbers task and do until i will be how_much_numbers? please help me I don't understand how to use task... and i dont need what Gui freeze.. I tryed using lock join, but not working, and cannt move my form... here is code:

  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();
        }
    }
Ondrej Janacek
  • 12,486
  • 14
  • 59
  • 93
  • 1
    I can understand what you want. Do you want to stop the thread completely, or just pause it until something happens, and then continue? – Shlomi Borovitz Mar 09 '14 at 14:21
  • I want to pause, in Main_Task, and when continue in other task – user3398571 Mar 09 '14 at 14:28
  • I write in comment where i need to pause task //HERE I NEED TO STOP TASK and where i need to continue //HERE I NEED TO RELEASE Main_Task – user3398571 Mar 09 '14 at 14:55
  • Looks like a [Producer–consumer problem](http://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem). Where `Main_Task` is your producer and `Primary_numbers` is the consumer. You can use [Semaphores](http://msdn.microsoft.com/en-us/library/system.threading.semaphore(v=vs.110).aspx?ppud=4) to handle this. – etaiso Mar 09 '14 at 14:55
  • Thanks i will try it if it will not help me I will write again... – user3398571 Mar 09 '14 at 14:57

0 Answers0