软件编程
位置:首页>> 软件编程>> C#编程>> c# Thread类线程常用操作详解

c# Thread类线程常用操作详解

作者:UP技术控  发布时间:2021-09-20 21:35:51 

标签:c#,Thread,线程
目录
  • 创建线程

  • 管理线程

  • 销毁线程

创建线程

线程是通过扩展 Thread 类创建的。扩展的 Thread 类调用 Start() 方法来开始子线程的执行。

下面的程序演示了这个概念:


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 thread
Child thread starts

管理线程

Thread 类提供了各种管理线程的方法。

下面的实例演示了 sleep() 方法的使用,用于在一个特定的时间暂停线程。


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 thread
Child thread starts
Child Thread Paused for 5 seconds
Child thread resumes

销毁线程

Abort() 方法用于销毁线程。

通过抛出 threadabortexception 在运行时中止线程。这个异常不能被捕获,如果有 finally 块,控制会被送至 finally 块。

下面的程序说明了这点:


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 thread
Child thread starts
0
1
2
In Main: Aborting the Child thread
Thread Abort Exception
Couldn't catch the Thread Exception

来源:https://www.cnblogs.com/lyl6796910/p/14517330.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com