C#中Join()方法实现线程的顺序执行

原创 2006年05月19日 15:21:00

在多线程中,某些线程的执行需要建立在另一个线程完成的基础上的,通过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;
        }

C#中添加三个线程同时启动执行某一方法,并依次调用某方法中的循环打印输。

添加三个线程同时启动执行某一方法,并依次调用某方法中的打印输:ABC ABC ABC ABC    实现代码如下:using System; using System.Collections.Gene...
  • qq719365064
  • qq719365064
  • 2016年10月25日 17:51
  • 506

c#线程顺序执行,并解决假死

private void Do_Pro()         {             foreach (Thread t in LT_Current)             {      ...
  • qq_28528625
  • qq_28528625
  • 2017年12月26日 22:29
  • 26

c# - if 条件中果有多个&& 或 || 条件,其执行顺序是怎样的?

首先,为了避免歧义,特此说明:我们不是讨论&&优先于||执行,我们讨论如果一个If中有多个&&;或一个if中有多个||;他们的执行顺序是什么。 答案是:从左至右。 示例: st...
  • yuxuac
  • yuxuac
  • 2016年12月30日 15:34
  • 3103

学习MFC首先要知道的--程序执行顺序

MFC的程序执行顺序很多刚学MFC的人都会被MFC给弄的晕头转向。以前传统的C语言中的main()不见了,window sdk api 中的WinMain()函数也不见了,到底用MFC编写的程序是如何...
  • husongchao
  • husongchao
  • 2009年12月23日 17:06
  • 10853

gulp顺序执行任务

gulp的任务的执行是异步的。  所以,当我写完一系列的任务,准备一股脑地执行。 # gulp.task('prod', ['clean', 'compass', 'image', 'style'...
  • kaosini
  • kaosini
  • 2016年03月10日 15:11
  • 794

join()之让线程按顺序执行

Thread中的join()主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将在子线程运行结束前结束。如果主线程想等待子线程执行完成后再结束(如,子线程处理一个数据,主线程需要取到...
  • u012951554
  • u012951554
  • 2015年08月24日 15:01
  • 1704

【java关键字-Thread】Thread.Join()的用法,及其实现线程顺序执行的原理

其实Join方法实现是通过wait(小提示:Object 提供的方法)。 当main线程调用t.join时候,main线程会获得线程对象t的锁(wait 意味着拿到该对象的锁),调用该对象的wait(...
  • claram
  • claram
  • 2015年08月25日 23:23
  • 6730

C++ cout执行顺序

C++ cout执行顺序 问题描述是这样的:如果在cout中调用函数,同时这个函数中包含输出语句,那么会先输出哪一句? 仔细一看,突然发现对C++的内容遗忘了,确实一下子看不出来输出的先后问题。 实现...
  • renhanlinbsl
  • renhanlinbsl
  • 2016年08月15日 11:57
  • 398

[C#]控件的几个事件的执行顺序

对于需要重写文本控件等来统一调整外观显示、数据校验等处理时,事件执行顺序有时会很重要。比如对重写的文本控件类做修改,以达到控件得到焦点和失去焦点时颜色变化。如果同时重写了OnGotFocus和OnEn...
  • am2004
  • am2004
  • 2006年01月04日 20:29
  • 1989

多个线程按顺序执行——join()

package com.jjyy.thread; /** * 假如有三个线程T1,T2,T3,如何保证T2在T3之前执行完成,T1在T2之前完成? * @author jiangyu 2015年9...
  • Before_Morning
  • Before_Morning
  • 2015年09月07日 08:30
  • 1915
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中Join()方法实现线程的顺序执行
举报原因:
原因补充:

(最多只允许输入30个字)