|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
多线程是许多操作系统所具有的特性,它能大大提高程序的运行效率,所以多线程编程技术为编程者广泛关注。目前微软的.Net战略正进一步推进,各种相关的技术正为广大编程者所接受,同样在.Net中多线程编程技术具有相称重要的地位。本文我就向大家介绍在.Net下进行多线程编程的基本方式和步骤。 开始新线程 在.Net下创建一个新线程是异常轻易的,你可以通过以下的语句来开始一个新的线程: Thread thread = new Thread (new ThreadStart (ThreadFunc)); thread.Start (); 第一条语句创建一个新的Thread对象,并指明了一个该线程的方式。当新的线程开始时,该方式也就被调用执行了。该线程对象通过一个System..Threading.ThreadStart类的一个实例以类型安全的方式来调用它要调用的线程方式。 第二条语句正式开始该新线程,一旦方式Start()被调用,该线程就保持在一个\"alive\"的状态下了,你可以通过读取它的IsAlive属性来判定它是否处于\"alive\"状态。下面的语句显示了假如一个线程处于\"alive\"状态下就将该线程挂起的方式: if (thread.IsAlive) { thread.Suspend (); } 不过请注重,线程对象的Start()方式只是启动了该线程,而并不保证其线程方式ThreadFunc()能立刻得到执行。它只是保证该线程对象能被分配到CPU时间,而实际的执行还要由操作系统根据处理器时间来决定。 一个线程的方式不包含任何参数,同时也不返回任何值。它的命名规则和一般函数的命名规则一样。它既可以是静态的(static)也可以是非静态的(nonstatic)。当它执行完毕后,相应的线程也就结束了,其线程对象的IsAlive属性也就被置为false了。下面是一个线程方式的实例: public static void ThreadFunc() { for (int i = 0; i <10; i++) { Console.WriteLine(\"ThreadFunc {0}\", i); } } 前台线程和后台线程 .Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。 一个线程是前台线程还是后台线程可由它的IsBackground属性来决定。这个属性是可读又可写的。它的默认值为false,即意味着一个线程默认为前台线程。我们可以将它的IsBackground属性设置为true,从而使之成为一个后台线程。 下面的例子是一个控制台程序,程序一开始便启动了10个线程,每个线程运行5秒钟时间。由于线程的IsBackground属性默认为false,即它们都是前台线程,所以尽管程序的主线程很快就运行结束了,但程序要到所有已启动的线程都运行完毕才会结束。示例代码如下: using System; using System.Threading; class MyApp { public static void Main () { for (int i=0; i<10; i++) { Thread thread = new Thread (new ThreadStart (ThreadFunc)); thread.Start (); } } private static void ThreadFunc () { DateTime start = DateTime.Now; while ((DateTime.Now - start).Seconds <5) ; } } 本新闻共2页,当前在第1页 1 2 本新闻共2页,当前在第1页 1 2 返回类别: 教程 上一教程: 10天学会ASP.net之第十天 下一教程: 微软的远程处理框架.NET Remoting - 1 您可以阅读与"浅析.Net下的多线程编程"相关的教程: · VB.NET多线程开发实例 · 多线程填写treeview控件(vb.net) · 解析.Net框架下的XML编程技术 · 构造.NET环境下的网页下载器 (2) · 初级:.net框架下的MD5 |
| 快精灵印艺坊 版权所有 |
首页 |
||