İngilizce dilinde oku

Aracılığıyla paylaş


ParameterizedThreadStart Temsilci

Tanım

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

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);

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 parametreye sahiptir ve bir değer döndürmez.

Not

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

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.'

Açıklamalar

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

yöntemi çağrılana Thread.Start kadar iş parçacığı yürütülmeye başlamaz. veya ThreadStart 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 ParameterizedThreadStart olduğunda, yöntemine Start(Object) geçirilen nesne temsilciye geçirilir.

Not

Visual Basic ve C# kullanıcıları iş parçacığı oluştururken veya ParameterizedThreadStart temsilci oluşturucuyu ThreadStart atlayabilir. Visual Basic'da, yönteminizi oluşturucuya Thread geçirirken işlecini kullanınAddressOf; ö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.

Not

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ı

GetMethodInfo(Delegate)

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

Şunlara uygulanır

Ürün Sürümler
.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

Ayrıca bkz.