程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#多線程開發3:給線程傳遞數據的兩種方法

C#多線程開發3:給線程傳遞數據的兩種方法

編輯:C#入門知識

C#多線程開發3:給線程傳遞數據的兩種方法


定義需要傳遞給線程的數據。

 

class Student 
{
    public string Name { get; set; }
    public int Age { get; set; }
    public int Score { get; set; }
}
List studentList = new List() { 
            new Student(){Name="zhangsan",Age=20,Score=5},
            new Student(){Name="lisi",Age=18,Score=4},
            new Student(){Name="wangwu",Age=19,Score=5}
};
方法1:使用ParameterizedThreadStart委托來傳遞數據

 

static void Main(string[] args)
{
     Thread t = new Thread(new ParameterizedThreadStart(MethodWithParameters));
     t.Start(studentList);
}
static void MethodWithParameters(object o) 
{
     List studentList = (List)o;
     foreach (Student s in studentList)
     {
          Console.WriteLine(s.Name + "," + s.Age + "," + s.Score);
     }
}
使用ParameterizedThreadStart委托時,線程方法必須滿足條件:有一個object類型的參數,且返回類型為void。

可以利用這個object類型的參數傳遞數據給線程。

方法2:將線程執行的方法與線程需要的數據封裝進同一個類

class ThreadModel
{
    private List studentList;
 
    public ThreadModel(List studentList)
    {
        this.studentList = studentList;
    }
 
     public void ThreadMethod()
     {
         foreach (Student s in studentList)
         {
             Console.WriteLine(s.Name + "," + s.Age + "," + s.Score);
          }
     }
}
static void Main(string[] args)
{
    ThreadModel threadModel = new ThreadModel(studentList);
    Thread t = new Thread(new ThreadStart(threadModel.ThreadMethod));
    t.Start(); 
}

在創建ThreadModel類對象時,通過構造函數傳入線程需要的數據。


 

 

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