ParameterizedThreadStart Temsilci
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
üzerinde Threadyürütülen yöntemi temsil eder.
public delegate void ParameterizedThreadStart(System::Object ^ obj);
public delegate void ParameterizedThreadStart(object? obj);
[System.Runtime.InteropServices.ComVisible(false)]
public delegate void ParameterizedThreadStart(object obj);
public delegate void ParameterizedThreadStart(object obj);
type ParameterizedThreadStart = delegate of obj -> unit
[<System.Runtime.InteropServices.ComVisible(false)>]
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 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.
using namespace System;
using namespace System::Threading;
namespace SystemThreadingExample
{
public ref class Work
{
public:
void StartThreads()
{
// Start a thread that calls a parameterized static method.
Thread^ newThread = gcnew
Thread(gcnew ParameterizedThreadStart(Work::DoWork));
newThread->Start(42);
// Start a thread that calls a parameterized instance method.
Work^ someWork = gcnew Work;
newThread = gcnew Thread(
gcnew ParameterizedThreadStart(someWork,
&Work::DoMoreWork));
newThread->Start("The answer.");
}
static void DoWork(Object^ data)
{
Console::WriteLine("Static thread procedure. Data='{0}'",
data);
}
void DoMoreWork(Object^ data)
{
Console::WriteLine("Instance thread procedure. Data='{0}'",
data);
}
};
}
//Entry point of example application
int main()
{
SystemThreadingExample::Work^ samplework =
gcnew SystemThreadingExample::Work();
samplework->StartThreads();
}
// This example displays output like the following:
// Static thread procedure. Data='42'
// Instance thread procedure. Data='The answer.'
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 bir iş parçacığı oluşturulduğunda, iş parçacığında yürütülen yöntem şu şekilde temsil edilir:
ThreadStart Oluşturucuya Thread.Thread(ThreadStart) geçirilen bir temsilci. Parametresi olmayan ve C# dilinde döndüren
void
veya Visual Basic'daki bir yordam olan herhangi birSub
yöntem temsilciyi temsil edebilir.ParameterizedThreadStart Oluşturucuya Thread.Thread(ParameterizedThreadStart) geçirilen bir temsilci. Türünde Object tek bir parametreye sahip olan ve C# dilinde void döndüren veya Visual Basic'de bir Sub yordamı olan tüm yöntemler temsilciyi temsil edebilir.
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:
Bir dizi.
Tüm veri öğeleri aynı türdeyse koleksiyon türü.
veya Tuple<T1,T2,T3,T4>gibi Tuple<T1,T2> bir tanımlama grubu türü.
Uzantı Metotları
GetMethodInfo(Delegate) |
Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır. |