C#中Join()方法实现线程的顺序执行
2006-05-19 15:21
387 查看
在多线程中,某些线程的执行需要建立在另一个线程完成的基础上的,通过ThreadPool可以完成这样功能,但我 不会^_^,查了若干资料也没有弄清楚怎么做。后来发现线程中的Join()方法也可以实现同样的功能。
程序代码如下:
using System.Thread;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private bool down = false;
Private Thread th1;
Private Thread th2;
private void UpdateStr(string str)
{
richTextBox1.AppendText(str + "/r/n");
}
private void UpdateString1()
{
UpdateStr("Thread1 is runnning!");
}
private void Updatestring2()
{
UpdateStr("Thread2 is running!");
}
private void thread1()
{
while (!down)
{
MethodInvoker mi = new MethodInvoker(UpdateString1);
this.Invoke(mi);
Thread.Sleep(1000);
}
}
private void thread2()
{
th1.Join();
while (down)
{
MethodInvoker mi = new MethodInvoker(Updatestring2);
this.Invoke(mi);
Thread.Sleep(1000);
}
}
private void button1_Click(object sender, EventArgs e)
{
th1 = new Thread(new ThreadStart(thread1));
th1.Start();
th2 = new Thread(new ThreadStart(thread2));
th2.Start();
}
private void button2_Click(object sender, EventArgs e)
{
down = !down;
}
程序代码如下:
using System.Thread;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private bool down = false;
Private Thread th1;
Private Thread th2;
private void UpdateStr(string str)
{
richTextBox1.AppendText(str + "/r/n");
}
private void UpdateString1()
{
UpdateStr("Thread1 is runnning!");
}
private void Updatestring2()
{
UpdateStr("Thread2 is running!");
}
private void thread1()
{
while (!down)
{
MethodInvoker mi = new MethodInvoker(UpdateString1);
this.Invoke(mi);
Thread.Sleep(1000);
}
}
private void thread2()
{
th1.Join();
while (down)
{
MethodInvoker mi = new MethodInvoker(Updatestring2);
this.Invoke(mi);
Thread.Sleep(1000);
}
}
private void button1_Click(object sender, EventArgs e)
{
th1 = new Thread(new ThreadStart(thread1));
th1.Start();
th2 = new Thread(new ThreadStart(thread2));
th2.Start();
}
private void button2_Click(object sender, EventArgs e)
{
down = !down;
}
相关文章推荐
- 有三个线程T1,T2,T3,下面方法可以确保它们按顺序执行的有()该线程继续执行
- Android 之 View线程 run方法和draw方法执行的先后顺序
- java中控制线程间执行顺序的方法
- Java实现等待所有子线程结束后再执行一段代码的方法
- iOS 通过添加线程依赖和信号量结合实现一个复杂界面请求多个接口时按指定顺序执行
- 代码详解のThread.join()实现多个线程顺序执行
- Thread.join()方法实现main()方法等待所有子线程执行完成[base jdk8]
- 三个线程轮流执行顺序打印ABC(一):使用Semaphore实现
- 匿名方法实现多线程同步到主线程执行
- C#之使用AutoResetEvent实现线程的顺序执行
- 匿名方法实现多线程同步到主线程执行
- 三个线程轮流执行顺序打印ABC(三):使用Lock实现
- 使用condition实现顺序执行线程
- 一种利用线程池线程执行任务, 并能够结束超时任务的方法 (.NET实现)
- Java 多线程实现的三种方法,附两个线程执行不同的输出
- java的join和yield方法处理线程顺序执行
- Java线程暂停一段时间之后继续执行的实现方法
- 三个线程轮流执行顺序打印ABC(二):使用Lock+Condition实现
- java多线程-使用ReentrantLock实现线程的顺序执行
- java使用CountDownLatch实现线程顺序执行