C# Abort

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

运行时通过抛出ThreadAbortException中止线程。无法捕获此异常,该控件将被发送到finally块(如果有)。

使用 Abort() 线程上的方法-

childThread.Abort();

示例

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(5000);

         //中止子线程
         Console.WriteLine("In Main: Aborting the Child thread");

         childThread.Abort();
         Console.ReadKey();
      }
   }
}

输出结果

In Main: Creating the Child thread
Child thread starts
0
1
2
3
4
5
6
7
8
In Main: Aborting the Child thread
Thread Abort Exception
Couldn't catch the Thread Exception