国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
C# 線程

如同java一樣,在c#中寫一個(gè)多線程應(yīng)用是非常簡(jiǎn)單的,本章將介紹如何在c#種開發(fā)多線程程序。在.net中線程是由System.Threading 名字空間所定義的。所以你必須包含這個(gè)名字空間。
using System.Threading;
開始一個(gè)線程
System.Threading 名字空間的線程類描述了一個(gè)線程對(duì)象,通過(guò)使用類對(duì)象,你可以創(chuàng)建、刪除、停止及恢復(fù)一個(gè)線程。創(chuàng)建一個(gè)新線程通過(guò)new 操作,并可以通過(guò)start()方法啟動(dòng)線程
thread = new Thread(new ThreadStart(HelloWorld));
thread.Start();
注意:和java程序不同,創(chuàng)建新線程并調(diào)用start()方法后并不去調(diào)用run()方法,而是傳遞線程調(diào)用程序
下面是啟動(dòng)線程執(zhí)行的函數(shù)
protected void HelloWorld()
{
string str ;
Console.write("helloworld");
}
}
殺死一個(gè)線程
線程類的 Abort()方法可以永久的殺死一個(gè)線程。在殺死一個(gè)線程起前應(yīng)該判斷線程是否在生存期間。
if ( thread.IsAlive )
{
thread.Abort();
}
停止一個(gè)線程
Thread.Sleep 方法能夠在一個(gè)固定周期類停止一個(gè)線程
thread.Sleep();
設(shè)定線程優(yōu)先級(jí)
線程類中的ThreadPriority 屬性是用來(lái)設(shè)定一個(gè)ThreadPriority的優(yōu)先級(jí)別。線程優(yōu)先級(jí)別包括Normal, AboveNormal, BelowNormal, Highest, and Lowest幾種。
thread.Priority = ThreadPriority.Highest;
掛起一個(gè)線程
調(diào)用線程類的Suspend()方法將掛起一個(gè)線程直到使用Resume()方法喚起她。在掛起一個(gè)線程起前應(yīng)該判斷線程是否在活動(dòng)期間。


if (thread.ThreadState == ThreadState.Running )
{
thread.Suspend();
}
喚起一個(gè)線程
通過(guò)使用Resume()方法可以喚起一個(gè)被掛起線程。在掛起一個(gè)線程起前應(yīng)該判斷線程是否在掛起期間,如果
線程未被掛起則方法不起作用。
if (thread.ThreadState == ThreadState.Suspended )
{
thread.Resume();
}

 

 

在很多情況下你可能要在各個(gè)線程中分別執(zhí)行存在輕微差別的任務(wù),同時(shí)需要把某種參數(shù)從一種任務(wù)所在的線程傳遞給另一任務(wù)所在的線程。要完成這一目標(biāo)可以采取好幾種合理的方式,最直接的做法就是創(chuàng)建一種Task對(duì)象,由它保存線程、特有的參數(shù)以及提供ThreadStart指派的worker方法。利用worker方法即可讀取所提供的參數(shù),因?yàn)樗镁褪荰ask對(duì)象的成員所以對(duì)線程當(dāng)然是唯一的。通過(guò)令線程成為一種公共字段,你就可以獲得訪問(wèn)線程所有成員的權(quán)限而不必編寫額外的封裝代碼了。請(qǐng)參看程序清單B 閱讀這一技術(shù)的有關(guān)示例。

程序清單B
using System;
using System.Threading;
namespace TaskDemo {
   public class MyTask {
      public Thread m_thread;
      string m_name;
      public MyTask(string name) {
      m_name = name;
      m_thread = new Thread(new ThreadStart(Worker));
     }
      private void Worker() {
        Console.WriteLine("Hello, ");
         Thread.Sleep(1500);
        Console.WriteLine(m_name);
      }
   }      
class TaskDemo1 {
         static void Main(string [] args)  {              
         MyTask task1 = new MyTask("Bill");
         MyTask task2 = new MyTask("Steve");
         task1.m_thread.Start();
         task2.m_thread.Start();
         }
}
}

 

 

關(guān)閉窗口結(jié)束線程

 private   void   Form1_Closing(object   sender,   System.ComponentModel.CancelEventArgs   e) 
  { 
          if(my_thread.ThreadState.ToString()   =="Suspended")   
          { 
  my_thread.Resume();   
  my_thread.Abort(); 
  my_thread.Join();   
          } 
          else 
        { 
  my_thread.Abort(); 
  my_thread.Join();   
        } 
  } 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
.NET多線程 傳入?yún)?shù)與獲取返回值
C#多線程編程簡(jiǎn)述
多線程 thread和Task的用法以及注意事項(xiàng)
C# 看懂這100+行代碼,你就真正入門了(經(jīng)典)
C# 多線程入門系列(二)
C#多線程編程之Thread類
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服