程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中 ThreadStart和ParameterizedThreadStart區別,

C#中 ThreadStart和ParameterizedThreadStart區別,

編輯:C#入門知識

C#中 ThreadStart和ParameterizedThreadStart區別,


最主要區別:

1.Thread 是啟動一個線程,但是沒有參數。

2.ParameterThreadStart  線程可以接受一個輸入參數

ThreadStart:

ThreadStart這個委托定義為void ThreadStart(),也就是說,所執行的方法不能有參數。

ThreadStart threadStart=new ThreadStart(ProcessData);
Thread thread=new Thread(threadStart);
thread.Start();
public void SayHelloToXiaohouye()
   {
string strName="My name is Xiaohouye"; 
 Console.Write("Hello "+strName); }

     上面很簡單的例子,我們用定義了一個ThreadStart類型的委托,這個委托制定了線程需要執行的方法: SayHelloToXiaohouye,在這個方法裡聲明一個變量,並輸出.這就構成了最簡單的多線程的例子,一般情況下,我們都是用這個的。

 

 

ParameterThreadStart:

ParameterThreadStart的定義為void ParameterizedThreadStart(object state),使用這個這個委托定義的線程的啟動函數可以接受一個輸入參數,具體例子如下 :

 

ParameterizedThreadStart threadStart=new ParameterizedThreadStart(SayHelloToXiaohouye)
Thread thread=new Thread() ;
thread.Start("Xiaohouye");
//注意參數一定要用object 類型,否則報錯 public void SayHelloToXiaohouye(object name) {
//使用時候需要轉換 Console.Write("Hello my name is {0}",name.ToString()); }

看了一個參數的例子,下面我們來看下多個參數的例子

,我們通過把多個參數組合到一個類中,然後把這個類的實例作為參數傳遞,就可以實現多個參數傳遞,廢話不多說,看代碼:

 

 

public class AddParameter
{
    public string a=string.Empty;
public string b=string.Empty; public AddParameter(string name1, string name2) { a = name1; b = name2; } } #endregion class Program { static void Main(string[] args) { Console.WriteLine("***** Adding with Thread objects *****"); Console.WriteLine("當前線程為:{0}", Thread.CurrentThread.ManagedThreadId); AddParameter p = new AddParameter("xiaohouye", "xiaowangzi"); Thread t = new Thread(new ParameterizedThreadStart(Add)); t.Start(p); Console.ReadLine(); } #region Add method
//組合參數 static void Add(object data) { if (data is AddParams) { Console.WriteLine("當前線程為:{0}",Thread.CurrentThread.ManagedThreadId); AddParameter ap = (AddParameter )data; Console.WriteLine("{0} + {1} is {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion } }

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