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

首頁 > 學院 > 開發設計 > 正文

C#中線程的用法

2019-11-14 13:39:43
字體:
來源:轉載
供稿:網友

通過委托的方式創建線程


 

static int sum(int x)

{

return x+x;

{

Func<int> a = sum;

創建一個新的線程格式:a.BeginInvoke(10);

獲取一個線程的返回值:IAsyncResult ar = a.BeginInvoke(10,null,null);  

  //第二種方法 IAsyncResult ar = a.BeginInvoke(10,OnCallback,a);

  //第三種方法,使用lanmba表達式,例如:

    /* IAsyncResult ar = */ a.BeginInvoke(10,ar=>

    {

      int res = a.EndInvoke(ar);

      Console.WriteLine(res);

    },null)

  第一個null參數代表回調函數,例如:

    static void OnCallback(IAsyncResult ar)

    {

      第二個null參數是回調函數傳遞的數據,例如:

      Func<int> a = ar.AsyncState as Func<int>;  // 把ar.AsyncState類型轉換為Func<int>類型的對象

    }

獲取線程返回值的狀態:ar.IsCompleted的返回值true為線程結束,false為線程還未結束。

獲取線程的執行的結果:int res = a.EndInvoke(ar);

 


用Thread創建線程

創建線程:Thread t = new Thread(Function);  // Function為需要啟動一個新的線程來執行的函數

啟動線程:t.Start();  // 如果Function有參數(必須是Object類型),則Function的參數由Start函數來傳遞

獲取線程ID:Thread.CurrentThread.ManagedThreadId

 

也可以自己寫一個類,例如:

class MyThread

{

  PRivate string fileName;

  private string filePath;

  public MyThread(string filename,string filepath)

  {

    this.fileName = filename;

    this.filePath   = filepath;

  }

  public void DownFile(string filename,string filepath)

  {

    Console.WriteLine("正在下載:"+filepath+filename);

    ......

    Console.WriteLine("下載完成");

  }

}

在program中調用

MyThread myt = new MyThread("filename","filepath");

Thread t = new Thread(myt.Down);

t.Start();

設置后臺線程的方法,例如:t.IsBackground = true;

線程分為前臺線程與后臺線程,后臺線程會伴隨著前臺線程的結束而被強制結束

強制終止一個線程:t.Abort();

優先執行的線程:t.Join();  // 暫停當前程序,先執行t.Join()然后再執行當前未執行完的線程

 

C#中的線程池

C#中已經封裝好了一個線程池ThreadPool,在雙核的條件下默認1023個工作線程,和1000個I/O線程。所有線程為后臺線程

調用線程池的方法:ThreadPool.QueueUserWorkItem(Function);  // Function為自定義函數,這個函數要有一個object類型的一個參數

 像一個正在運行的線程加鎖的用法:lock(加鎖的對象);

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 全州县| 南川市| 康马县| 萨迦县| 辽源市| 巩义市| 弥勒县| 海门市| 日土县| 碌曲县| 高雄市| 蒲江县| 名山县| 丽水市| 万年县| 临西县| 肥东县| 南开区| 汽车| 商水县| 灵川县| 新宁县| 房产| 富民县| 黄陵县| 上林县| 句容市| 泊头市| 广河县| 西昌市| 庄河市| 广州市| 沈阳市| 乌拉特中旗| 丁青县| 南部县| 新建县| 林口县| 马尔康县| 长顺县| 永和县|