C#多线程之Thread中Thread.Join()函数用法分析

本文实例讲述了C#多线程之Thread中Thread.Join()函数用法。分享给大家供大家参考。具体分析如下:

Thread.Join()在MSDN中的解释:Blocks the calling thread until a thread terminates

当NewThread调用Join方法的时候,MainThread就被停止执行,
直到NewThread线程执行完毕。

Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));
oThread.Start();
while (!oThread.IsAlive) //表示线程当前是否为可用状态
   Thread.Sleep(1);
oThread.Abort(); //终止线程
oThread.Join(); //主线程被停止,直到当前线程执行完毕
Console.WriteLine();

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析

    本文实例讲述了C#中Forms.Timer.Timers.Timer.Threading.Timer的用法分析,分享给大家供大家参考.具体分析如下: 在.NET Framework里面提供了三种Timer ① System.Windows.Forms.Timer ② System.Timers.Timer ③ System.Threading.Timer 现分述如下: 一.System.Windows.Forms.Timer 1.基于Windows消息循环,用事件方式触发,在界面线程执行:是使用

  • C#多线程之Thread类详解

    使用System.Threading.Thread类可以创建和控制线程. 常用的构造函数有: // 摘要: // 初始化 System.Threading.Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托. // // 参数: // start: // System.Threading.ParameterizedThreadStart 委托,它表示此线程开始执行时要调用的方法. // // 异常: // System.ArgumentNullException: // star

  • C#多线程之Thread中Thread.IsAlive属性用法分析

    本文实例讲述了C#多线程之Thread中Thread.IsAlive属性用法.分享给大家供大家参考.具体如下: Thread.IsAlive属性 ,表示该线程当前是否为可用状态 如果线程已经启动,并且当前没有任何异常的话,则是true,否则为false Start()后,线程不一定能马上启动起来,也许CPU正在忙其他的事情,但迟早是会启动起来的! Thread oThread = new Thread(new ThreadStart(Back.Start)); oThread.Start();

  • C#利用System.Threading.Thread.Sleep即时输出信息的详解

    有个网站需要生成静态页.据以往经验,凡比较烂的空间,短时间内运行耗能大的运算,都会出现"service unavailable",以致网页无法正常打开.生成静态页,需要在短时间内读取大量的数据并保存为html页,好一些的空间运行起来没问题,就怕那些垃圾空间--生成的时候,需要即时输出信息通知客户. 根据经验思考后,有两种方法可行:1.每次只执行生成一个html页,然后输出信息给客户看,如"已生成首页,正在生成新闻页,请稍候..",然后在输出的代码里放置上js代码,j

  • C#多线程ThreadPool线程池详解

    简单说明一下: 线程池可以看做容纳线程的容器:一个应用程序最多只能有一个线程池:ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池: 每排入一个工作函数,就相当于请求创建一个线程: 线程池的作用: 1.线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率. 2.如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜.),况且我们还不能控制线程池中线程的开始.挂起.和

  • 详解C#中 Thread,Task,Async/Await,IAsyncResult的那些事儿

    说起异步,Thread,Task,async/await,IAsyncResult 这些东西肯定是绕不开的,今天就来依次聊聊他们 1.线程(Thread) 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行:对于比较耗时的操作(例如io,数据库操作),或者等待响应(如WCF通信)的操作,可以单独开启后台线程来执行,这样主线程就不会阻塞,可以继续往下执行:等到后台线程执行完毕,再通知主线程,然后做出对应操作! 在C#中开启新线程比较简单 static void Main(string[]

  • c#线程Thread示例

    C#是一门支持多线程的语言,因此线程的使用也是比较常见的.由于线程的知识在Win32编程的时候已经说得过多,所以在.Net中很少介绍这部分(可能.Net不觉得这部分是它所特有的). 那么线程相关的问题大致有如下四类(这篇文章只讨论单线程.单线程与UI线程这两方面的问题).问题一,线程的基本操作,例如:暂停.继续.停止等:问题二,如何向线程传递参数或者从中得到其返回值:问题三,如何使线程所占用的CPU不要老是百分之百:最后一个,也是问题最多的,就是如何在子线程来控制UI中的控件,换句话说,就是在线

  • C#多线程之Thread中Thread.Join()函数用法分析

    本文实例讲述了C#多线程之Thread中Thread.Join()函数用法.分享给大家供大家参考.具体分析如下: Thread.Join()在MSDN中的解释:Blocks the calling thread until a thread terminates 当NewThread调用Join方法的时候,MainThread就被停止执行, 直到NewThread线程执行完毕. Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));

  • 深入多线程之:双向信号与竞赛的用法分析

    双向信号和竞赛(Two-Way Signaling and Races) Monitor.Pulse方法的一个重要特性是它是异步执行的,这意味着调用pulse方法并不会阻塞自己等待Monitor.Pulse返回.如果任何一个线程在pulsed 对象上等待,它是不会阻塞的,换句话说,调用Monitor.Pulse对程序不会有什么作用,你可以认为Monitor.Pulse方法被忽略了.这样Pulse提供了一个单向通信:一个 pulsing线程悄悄的向一个waiting 线程发送信号.Pulse并不会

  • Python中threading模块join函数用法实例分析

    本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后join这些线程结束,例如: for i in range(10): t = ThreadTest(i) thread_arr.append(t) for i in range(10): thread_arr[i].start() for i in range(10): thread_arr[i].joi

  • JavaScript中push(),join() 函数 实例详解

    定义和用法 push方法 可向数组的末尾添加一个或多个元素,并返回一个新的长度. join方法 用于把数组中所有元素添加到一个指定的字符串,元素是通过指定的分隔符进行分割的. 语法 arrayObject.push(newelement1,newelement2,....,newelementX) arrayObject.join(separator). 参数描述newelement1必需.要添加到数组的第一个元素.newelement2可选.要添加到数组的第二个元素.newelementX可选

  • Python中str.join()简单用法示例

    本文实例讲述了Python中str.join()简单用法.分享给大家供大家参考,具体如下: Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串.其中,序列中的元素应是字符串类型. join()方法语法: str.join(sequence) 例子: >>> str='-' >>> l=['2016','5','9'] >>> t=('2016','5','9') >>> str.join(l) '20

  • Pandas 中的join函数应用实现删除多余的空行

    str.join即sequence – 要连接的元素序列.返回通过指定字符连接序列中元素后生成的新字符串. n = 'abc' n1 = '-'.join(n) # n1 'a-b-c'   n = ['we', 'are', 'programmer'] n = ' '.join(n) # 'we are programmer' 在数据处理中可能经常会使用join函数,比如: 一.有机肥料上下面多了一行空行:二.有机肥料下面多了一行空行, 情况入下图所示: 其实处理很简单只需要对这一列数据应用自

  • 如何在Python 中使用 join() 函数把列表拼接成一个字符串

    目录 1.设置 end=’’ 2.拼接字符串(string) 3.举例 内容概要:如何把列表中的元素拼接为一个字符串呢?本文介绍了采用 join() 函数的解决方法. 问题:有一个列表,比如:letters=[‘a’,‘b’,‘c’],想要把列表的元素连续显示出来,应该怎么办? 解决办法: 1.设置 end=’’ 如何使Python中的print()语句运行结果不换行 的方法,设置 end=’’. 如下代码所示: letters=['a','b','c'] for letter in lette

  • 如何在Python 中使用 join() 函数把列表拼接成一个字符串

    目录 1.设置 end=’’ 2.拼接字符串(string) 3.举例 内容概要:如何把列表中的元素拼接为一个字符串呢?本文介绍了采用 join() 函数的解决方法. 问题:有一个列表,比如:letters=[‘a’,‘b’,‘c’],想要把列表的元素连续显示出来,应该怎么办? 解决办法: 1.设置 end=’’ 如何使Python中的print()语句运行结果不换行 的方法,设置 end=’’. 如下代码所示: letters=['a','b','c'] for letter in lette

  • C#中异步回调函数用法实例

    本文实例讲述了C#中异步回调函数用法.分享给大家供大家参考.具体如下: static void Main(string[] args) { Func<string,string> showMessage = ShowMessage; //设置了回调函数Completed,不能有返回值 IAsyncResult result = showMessage.BeginInvoke("测试异步委托",new AsyncCallback(Completed),null); //半段异

随机推荐