ParameterizedThreadStart Temsilci

Tanım

üzerinde Threadyürütülen yöntemi temsil eder.

public delegate void ParameterizedThreadStart(System::Object ^ obj);
[System.Runtime.InteropServices.ComVisible(false)]
public delegate void ParameterizedThreadStart(object obj);
public delegate void ParameterizedThreadStart(object obj);
[<System.Runtime.InteropServices.ComVisible(false)>]
type ParameterizedThreadStart = delegate of obj -> unit
type ParameterizedThreadStart = delegate of obj -> unit
Public Delegate Sub ParameterizedThreadStart(obj As Object)

Parametreler

obj
Object

İş parçacığı yordamı için veri içeren bir nesne.

Öznitelikler

Örnekler

Aşağıdaki kod örneği, statik bir ParameterizedThreadStart yöntem ve örnek yöntemi yürütmek için bir temsilci kullanır. İlk ParameterizedThreadStart temsilci statik DoWork yöntemle, ikincisi örnek DoMoreWork yöntemiyle temsil edilir. Her iki yöntem de temsilci imzası ile ParameterizedThreadStart eşleşmektedir; başka bir ifadeyle, türünde Object tek bir parametresi vardır ve bir değer döndürmez.

Note

Visual Basic ve C# derleyicileri DoWork ve DoMoreWork yöntemlerinin imzalarından ParameterizedThreadStart temsilcisini çıkarsar ve doğru oluşturucuyu çağırır. Bu nedenle kodda açık oluşturucu çağrısı yoktur.

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.'
Imports System.Threading

Public Class Work
    Shared Sub Main()
        ' Start a thread that calls a parameterized static method.
        Dim newThread As New Thread(AddressOf Work.DoWork)
        newThread.Start(42)

        ' Start a thread that calls a parameterized instance method.
        Dim w As New Work()
        newThread = New Thread(AddressOf w.DoMoreWork)
        newThread.Start("The answer.")
    End Sub
 
    Public Shared Sub DoWork(ByVal data As Object)
        Console.WriteLine("Static thread procedure. Data='{0}'",
                          data)
    End Sub

    Public Sub DoMoreWork(ByVal data As Object) 
        Console.WriteLine("Instance thread procedure. Data='{0}'",
                          data)
    End Sub
End Class
' This example displays output like the following:
'    Static thread procedure. Data='42'
'    Instance thread procedure. Data='The answer.'

Açıklamalar

Yönetilen iş parçacığı oluşturulduğunda, iş parçacığında yürütülen yöntem şu şekilde temsil edilir:

yöntem çağrılana Thread.Start kadar iş parçacığı yürütülmeye başlamaz. ThreadStart veya ParameterizedThreadStart temsilcisi iş parçacığında çağrılır ve yürütme, temsilci tarafından temsil edilen yöntemin ilk satırında başlar. Temsilci söz konusu olduğunda ParameterizedThreadStart , yöntemine Start(Object) geçirilen nesne temsilciye geçirilir.

Note

Visual Basic ve C# kullanıcıları, iş parçacığı oluştururken ThreadStart veya ParameterizedThreadStart temsilci oluşturucuyu atlayabilir. Visual Basic'da, yönteminizi Thread oluşturucuya geçirirken AddressOf işlecini kullanın; örneğin, Dim t As New Thread(AddressOf ThreadProc). C# dilinde, iş parçacığı yordamının adını belirtmeniz yeterlidir. Derleyici doğru temsilci oluşturucuyu seçer.

Note

C++ dilinde bir örnek yöntemi için temsilci oluşturduğunuzda ParameterizedThreadStart , oluşturucunun ilk parametresi örnek değişkenidir. Statik bir yöntem için oluşturucunun ilk parametresi sıfırdır. Statik bir yöntem için, temsilci oluşturucu tek bir parametre gerektirir: sınıf adıyla nitelenen geri çağırma yönteminin adresi.

Temsilci ParameterizedThreadStart ve Thread.Start(Object) yöntem aşırı yüklemesi, bir iş parçacığı yordamına veri geçirmeyi kolaylaştırır, ancak bu teknik türü güvenli değildir çünkü herhangi bir nesne öğesine Thread.Start(Object)geçirilebilir. Bir iş parçacığı yordamına veri geçirmenin daha sağlam bir yolu, hem iş parçacığı yordamını hem de veri alanlarını bir çalışan nesnesine yerleştirmektir. Daha fazla bilgi için bkz . Başlangıç Zamanında İş Parçacığı Oluşturma ve Veri Geçirme.

Temsilci ParameterizedThreadStart yalnızca tek bir parametreyi destekler. Bu parametreyi ParameterizedThreadStart aşağıdakilerden biri yaparak öğesine birden çok veri öğesi geçirebilirsiniz:

Uzantı Metotları

Name Description
GetMethodInfo(Delegate)

Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır.

Şunlara uygulanır

Ayrıca bkz.