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

C#線程調用帶參數的方法

編輯:C#入門知識

在 .NET Framework 2.0 版中,要實現線程調用帶參數的方法有兩種辦法。

第一種:使用ParameterizedThreadStart。

調用 System.Threading.Thread.Start(System.Object) 重載方法時將包含數據的對象傳遞給線程。

使用 ParameterizedThreadStart 委托不是傳遞數據的類型安全的方法,因為 System.Threading.Thread.Start(System.Object) 方法重載接受任何對象。

這種方法不推薦使用,故在此不做詳細介紹,具體用法參見:http://msdn2.microsoft.com/zh-cn/library/system.threading.parameterizedthreadstart(VS.80).aspx

ParameterizedThreadStart ParStart = new ParameterizedThreadStart(ThreadMethod);
Thread myThread = new
 Thread(ParStart);
object o = "hello"
;
myThread.Start(o);

//ThreadMethod如下:

public void ThreadMethod(object ParObject)
{
    //程序代碼

}



第二種:將線程執行的方法和參數都封裝到一個類裡面。通過實例化該類,方法就可以調用屬性來實現間接的類型安全地傳遞參數。

具體代碼如下(本示例來自MSDN)

using System;
using
 System.Threading;

//ThreadWithState 類裡包含了將要執行的任務以及執行任務的方法

public class ThreadWithState {
    //要用到的屬性,也就是我們要傳遞的參數

    private string boilerplate;
    private int
 value;

    //包含參數的構造函數

    public ThreadWithState(string text, int number) 
    {
        boilerplate =
 text;
        value =
 number;
    }

    //要丟給線程執行的方法,本處無返回類型就是為了能讓ThreadStart來調用

    public void ThreadProc() 
    {
        //這裡就是要執行的任務,本處只顯示一下傳入的參數

         Console.WriteLine(boilerplate, value); 
    }
}

//用來調用上面方法的類,是本例執行的入口

public class Example {
    public static void
 Main() 
    {
        //實例化ThreadWithState類,為線程提供參數

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