当前位置:K88软件开发文章中心编程语言.NET.NET02 → 文章内容

C# 多线程

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-14 1:48:40

字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。此方法有不同的重载形式。这里只给出了一些形式。22public static void VolatileWrite(ref byte address,byte value)public static void VolatileWrite(ref double address,double value)public static void VolatileWrite(ref int address,int value)public static void VolatileWrite(ref Object address,Object value)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。此方法有不同的重载形式。这里只给出了一些形式。23public static bool Yield()导致调用线程执行准备好在当前处理器上运行的另一个线程。由操作系统选择要执行的线程。创建线程线程是通过扩展 Thread 类创建的。扩展的 Thread 类调用 Start() 方法来开始子线程的执行。下面的程序演示了这个概念:using System;using System.Threading;namespace MultithreadingApplication{ class ThreadCreationProgram { public static void CallToChildThread() { Console.WriteLine("Child thread starts"); } static void Main(string[] args) { ThreadStart childref = new ThreadStart(CallToChildThread); Console.WriteLine("In Main: Creating the Child thread"); Thread childThread = new Thread(childref); childThread.Start(); Console.ReadKey(); } }}当上面的代码被编译和执行时,它会产生下列结果:In Main: Creating the Child threadChild thread starts管理线程Thread 类提供了各种管理线程的方法。下面的实例演示了 sleep() 方法的使用,用于在一个特定的时间暂停线程。using System;using System.Threading;namespace MultithreadingApplication{ class ThreadCreationProgram { public static void CallToChildThread() { Console.WriteLine("Child thread starts"); // 线程暂停 5000 毫秒 int sleepfor = 5000; Console.WriteLine("Child Thread Paused for {0} seconds", sleepfor / 1000); Thread.Sleep(sleepfor); Console.WriteLine("Child thread resumes"); } static void Main(string[] args) { ThreadStart childref = new ThreadStart(CallToChildThread); Console.WriteLine("In Main: Creating the Child thread"); Thread childThread = new Thread(childref); childThread.Start(); Console.ReadKey(); } }}当上面的代码被编译和执行时,它会产生下列结果:In Main: Creating the Child threadChild thread startsChild Thread Paused for 5 secondsChild thread resumes销毁线程Abort() 方法用于销毁线程。通过抛出 threadabortexception 在运行时中止线程。这个异常不能被捕获,如果有 finally 块,控制会被送至 finally 块。下面的程序说明了这点:using System;using System.Threading;namespace MultithreadingApplication{ class ThreadCreationProgram { public static void CallToChildThread() { try { Console.WriteLine("Child thread starts"); // 计数到 10 for (int counter = 0; counter <= 10; counter++) { Thread.Sleep(500); Console.WriteLine(counter); } Console.WriteLine("Child Thread Completed"); } catch (ThreadAbortException e) { Console.WriteLine("Thread Abort Exception"); } finally { Console.WriteLine("Couldn't catch the Thread Exception"); } } static void Main(string[] args) { ThreadStart childref = new ThreadStart(CallToChildThread); Console.WriteLine("In Main: Creating the Child thread"); Thread childThread = new Thread(childref); childThread.Start(); // 停止主线程一段时间 Thread.Sleep(2000); // 现在中止子线程 Console.WriteLine("In Main: Aborting the Child thread"); childThread.Abort(); Console.ReadKey(); } }}当上面的代码被编译和执行时,它会产生下列结果:In Main: Creating the Child threadChild thread starts012In Main: Aborting the Child threadThread Abort ExceptionCouldn't catch the Thread Exception

上一页  [1] [2] 


C# 多线程