程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#多線程開發4:線程的Abort和ResetAbort方法

C#多線程開發4:線程的Abort和ResetAbort方法

編輯:C#入門知識

C#多線程開發4:線程的Abort和ResetAbort方法


使用Abort方法可以中止線程,而使用ResetAbort方法可以取消中止線程的操作。

下面的實例演示了Abort和ResetAbort方法的使用。

 

using System;
using System.Threading;
namespace AbortAndResetabortExp
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread t = new Thread(DoWork);
            t.Name = "八戒";
            t.Start();
            Thread.Sleep(10000);
            Console.WriteLine("悟空:八戒,該起床了");
            t.Abort();
        }
        static void DoWork() 
        {
            try
            {
                while (true)
                {
                    Console.WriteLine(Thread.CurrentThread.Name + ":呼呼~~~~~");
                    Thread.Sleep(1000);
                }
            }
            catch (ThreadAbortException e)
            {
                Console.WriteLine(Thread.CurrentThread.Name + ":還早呢,我還要再睡會");
                Thread.ResetAbort();
            }
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(Thread.CurrentThread.Name + ":呼呼~~~~~");
                Thread.Sleep(1000);
            }
        }
    }
}

 

實例中,主線程啟動“八戒”線程,使其“呼呼”睡覺。10秒鐘後,主線程通過調用“八戒”線程的Abort方法中止“八戒”線程,“八戒”線程的Abort方法被調用後會觸發ThreadAbortException異常,“八戒”線程捕獲到該異常後,使用ResetAbort方法取消中止線程的操作,因為他還沒有睡夠呢。

整個程序的執行結果如下圖所示,從結果中可以看出,調用ResetAbort方法後,線程仍然在執行。

\

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved