国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Visual C#中編寫多線程程序之起步

2024-07-21 02:29:37
字體:
來源:轉載
供稿:網友
  .net將關于多線程的功能定義在system.threading名字空間中。因此,要使用多線程,必須先聲明引用此名字空間(using system.threading;)。

  即使你沒有編寫多線程應用程序的經驗,也可能聽說過“啟動線程”“殺死線程”這些詞,其實除了這兩個外,涉及多線程方面的還有諸如“暫停線程”“優先級”“掛起線程”“恢復線程”等等。下面將一個一個的解釋。

  a.啟動線程

  顧名思義,“啟動線程”就是新建并啟動一個線程的意思,如下代碼可實現:

thread thread1 = new thread(new threadstart( count));

  其中的 count 是將要被新線程執行的函數。

  b.殺死線程

  “殺死線程”就是將一線程斬草除根,為了不白費力氣,在殺死一個線程前最好先判斷它是否還活著(通過 isalive 屬性),然后就可以調用 abort 方法來殺死此線程。

  c.暫停線程

  它的意思就是讓一個正在運行的線程休眠一段時間。如 thread.sleep(1000); 就是讓線程休眠1秒鐘。

  d.優先級

  這個用不著解釋了。thread類中有一個threadpriority屬性,它用來設置優先級,但不能保證操作系統會接受該優先級。一個線程的優先級可 分為5種:normal, abovenormal, belownormal, highest, lowest。具體實現例子如下:

thread.priority = threadpriority.highest;

  e.掛起線程

  thread類的suspend方法用來掛起線程,知道調用resume,此線程才可以繼續執行。如果線程已經掛起,那就不會起作用。

if (thread.threadstate = threadstate.running)
{
 thread.suspend();
}

  f.恢復線程

  用來恢復已經掛起的線程,以讓它繼續執行,如果線程沒掛起,也不會起作用。

if (thread.threadstate = threadstate.suspended)
{
 thread.resume();
}

  下面將列出一個例子,以說明簡單的線程處理功能。此例子來自于幫助文檔。

using system;
using system.threading;
// simple threading scenario: start a static method running
// on a second thread.
public class threadexample {
 // the threadproc method is called when the thread starts.
 // it loops ten times, writing to the console and yielding
 // the rest of its time slice each time, and then ends.
 public static void threadproc() {
  for (int i = 0; i < 10; i++) {
   console.writeline("threadproc: {0}", i);
   // yield the rest of the time slice.
   thread.sleep(0);
  }
 }

 public static void main() {
  console.writeline("main thread: start a second thread.");
  // the constructor for the thread class requires a threadstart
  // delegate that represents the method to be executed on the
  // thread. c# simplifies the creation of this delegate.
  thread t = new thread(new threadstart(threadproc));
  // start threadproc. on a uniprocessor, the thread does not get
  // any processor time until the main thread yields. uncomment
  // the thread.sleep that follows t.start() to see the difference.
  t.start();
  //thread.sleep(0);

  for (int i = 0; i < 4; i++) {
   console.writeline("main thread: do some work.");
   thread.sleep(0);
  }

  console.writeline("main thread: call join(), to wait until threadproc ends.");
  t.join();
  console.writeline("main thread: threadproc.join has returned. press enter to end program.");
  console.readline();
 }
}

  此代碼產生的輸出類似如下內容:

main thread: start a second thread.
main thread: do some work.
threadproc: 0
main thread: do some work.
threadproc: 1
main thread: do some work.
threadproc: 2
main thread: do some work.
threadproc: 3
main thread: call join(), to wait until threadproc ends.
threadproc: 4
threadproc: 5
threadproc: 6
threadproc: 7
threadproc: 8
threadproc: 9
main thread: threadproc.join has returned. press enter to end program.
中國最大的web開發資源網站及技術社區,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭平县| 浠水县| 全州县| 新兴县| 义乌市| 昭觉县| 和平区| 佛坪县| 通江县| 黔江区| 吴川市| 家居| 古丈县| 阿拉善右旗| 邵武市| 乐都县| 连城县| 商南县| 阿拉善右旗| 从江县| 阿拉尔市| 门头沟区| 门源| 武邑县| 交城县| 安徽省| 南平市| 江门市| 安康市| 西吉县| 刚察县| 肥城市| 浦江县| 佛坪县| 龙南县| SHOW| 富顺县| 嘉定区| 宣汉县| 尚义县| 肇源县|