程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#完成終止正在履行的線程

C#完成終止正在履行的線程

編輯:C#入門知識

C#完成終止正在履行的線程。本站提示廣大學習愛好者:(C#完成終止正在履行的線程)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成終止正在履行的線程正文


本文實例講述了C#完成終止正在履行的線程的完成辦法,並針對一些輕易失足的處所停止了深刻剖析,詳細辦法以下:

普通來講,許多人都邑應用Abort辦法來終止線程,其實這類做法其實不可取!假如你的線程正在操作臨界資本,很有能夠會形成資本沒有准確釋放而湧現逝世鎖成績。准確的做法應當是應用標志來終止線程的履行。

根本思緒是:界說一個用於描寫“停滯”旌旗燈號的變量,在全部法式啟動前,設置該變量為false。在線程中,輪回斷定該變量能否曾經被設置為true,假如沒有,則持續履行,不然就加入輪回並釋放資本,然撤退退卻出履行。當我們須要線程加入時,只需設置這個“停滯”旌旗燈號為true便可。
 
上面我們來看詳細的操作步調。

起首界說一個“停滯”旌旗燈號變量:

private volatile bool canStop = false;

留意這裡我們應用了volatile症結字,由於canStop變量將會被挪用線程和履行線程同時應用,即在挪用線程中初始化和設置它的值,而在履行線程中斷定它的值。如許做就告知編譯器,這個canStop變量將被多個線程所應用,強迫編譯器纰謬其狀況停止優化。假如有興致可以上MSDN檢查關於這個volatile症結字的更多說明。此處同時也給canStop做了初始化。
 
如今我們看看線程的創立與履行的代碼:

i = 0;  
// 應用匿名辦法界說線程的履行體  
Thread thread = new Thread(  
delegate(object param)  
{  
  // 期待“停滯”旌旗燈號,假如沒有收到旌旗燈號則履行  
  while (!canStop)  
  {  
    i++;  
    UpdateLabel(i);  
  }  
  // 此時曾經收到停滯旌旗燈號,可以在此釋放資本並  
  // 初始化變量  
  canStop = false;  
});  
 
thread.Start();

很簡略,在線程的履行體中重復斷定canStop變量能否為true,若是則連忙跳出while輪回(停滯變量的自加和更新界面的操作),然後從新初始化canStop變量為false,以便於下次的應用。
 
願望本文所述對年夜家的C#法式設計有所贊助。

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