国产探花免费观看_亚洲丰满少妇自慰呻吟_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(加鎖的對象);

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 虎林市| 建瓯市| 察隅县| 镶黄旗| 巫溪县| 武安市| 北安市| 永新县| 甘南县| 陇南市| 平原县| 阿合奇县| 永嘉县| 吉木萨尔县| 金川县| 肇东市| 蚌埠市| 朝阳市| 东莞市| 奎屯市| 巴林左旗| 枞阳县| 上高县| 垦利县| 龙州县| 鄂州市| 廉江市| 宜章县| 六枝特区| 顺义区| 丰原市| 台南市| 岗巴县| 乡宁县| 蕲春县| 高清| 普定县| 克东县| 福安市| 延长县| 辽源市|