ParameterizedThreadStart 代理人

定義

代表在 Thread 上執行的方法。

C#
public delegate void ParameterizedThreadStart(object? obj);
C#
[System.Runtime.InteropServices.ComVisible(false)]
public delegate void ParameterizedThreadStart(object obj);
C#
public delegate void ParameterizedThreadStart(object obj);

參數

obj
Object

物件,包含執行緒程序的資料。

屬性

範例

下列程式碼範例會使用 ParameterizedThreadStart 委派來執行靜態方法和實例方法。 第一個 ParameterizedThreadStart 委派是由靜態 DoWork 方法表示,而第二個委派則由 實例 DoMoreWork 方法表示。 這兩種方法都符合 ParameterizedThreadStart 委派簽章;也就是說,它們具有類型的 Object 單一參數,而且不會傳回值。

備註

Visual Basic 和 C# 編譯器會從 和 DoMoreWork 方法的 DoWork 簽章推斷 ParameterizedThreadStart 委派,並呼叫正確的建構函式。 因此,程式碼中沒有明確的建構函式呼叫。

C#
using System;
using System.Threading;

public class Work
{
    public static void Main()
    {
        // Start a thread that calls a parameterized static method.
        Thread newThread = new Thread(Work.DoWork);
        newThread.Start(42);

        // Start a thread that calls a parameterized instance method.
        Work w = new Work();
        newThread = new Thread(w.DoMoreWork);
        newThread.Start("The answer.");
    }
 
    public static void DoWork(object data)
    {
        Console.WriteLine("Static thread procedure. Data='{0}'",
            data);
    }

    public void DoMoreWork(object data)
    {
        Console.WriteLine("Instance thread procedure. Data='{0}'",
            data);
    }
}
// This example displays output like the following:
//       Static thread procedure. Data='42'
//       Instance thread procedure. Data='The answer.'

備註

建立 Managed 執行緒時,線上程上執行的方法會以下列方式表示:

在呼叫 方法之前 Thread.Start ,執行緒不會開始執行。 ThreadStartParameterizedThreadStart 委派會線上程上叫用,而執行會從委派所表示之方法的第一行開始。 在委派的情況下 ParameterizedThreadStart ,傳遞至 Start(Object) 方法的物件會傳遞至委派。

備註

Visual Basic 和 C# 使用者可以在建立執行緒時省略 ThreadStartParameterizedThreadStart 委派建構函式。 在 Visual Basic 中,將 方法傳遞至 Thread 建構函式時,請使用 AddressOf 運算子,例如 Dim t As New Thread(AddressOf ThreadProc) 。 在 C# 中,只要指定執行緒程式的名稱即可。 編譯器會選取正確的委派建構函式。

備註

當您在 C++ 中建立 ParameterizedThreadStart 實例方法的委派時,建構函式的第一個參數是執行個體變數。 如果是靜態方法,建構函式的第一個參數是零。 對於靜態方法,委派建構函式只需要一個參數:回呼方法的位址,由類別名稱限定。

ParameterizedThreadStart委派和 Thread.Start(Object) 方法多載可讓您輕鬆地將資料傳遞至執行緒程式,但這項技術的類型不安全,因為任何物件都可以傳遞至 Thread.Start(Object) 。 將資料傳遞至執行緒程式的更健全方式,就是將執行緒程式和資料欄位放入背景工作物件。 如需詳細資訊,請參閱 在開始時間建立執行緒和傳遞資料

委派 ParameterizedThreadStart 僅支援單一參數。 您可以藉由將下列其中一個參數傳遞給 ,將多個資料項目傳遞至 ParameterizedThreadStart

擴充方法

GetMethodInfo(Delegate)

取得表示特定委派所代表之方法的物件。

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

另請參閱