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();
}
}