İngilizce dilinde oku

Aracılığıyla paylaş


Thread Oluşturucular

Tanım

Thread sınıfının yeni bir örneğini başlatır.

Aşırı Yüklemeler

Thread(ParameterizedThreadStart)

Sınıfın yeni bir örneğini başlatır ve iş parçacığı başlatıldığında nesnenin Thread iş parçacığına geçirilmesine izin veren bir temsilci belirtir.

Thread(ThreadStart)

Thread sınıfının yeni bir örneğini başlatır.

Thread(ParameterizedThreadStart, Int32)

Sınıfın Thread yeni bir örneğini başlatır, iş parçacığı başlatıldığında nesnenin iş parçacığına geçirilmesine izin veren bir temsilci belirtir ve iş parçacığı için en büyük yığın boyutunu belirtir.

Thread(ThreadStart, Int32)

İş parçacığı için en büyük yığın boyutunu belirterek sınıfının yeni bir örneğini Thread başlatır.

Thread(ParameterizedThreadStart)

Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs

Sınıfın yeni bir örneğini başlatır ve iş parçacığı başlatıldığında nesnenin Thread iş parçacığına geçirilmesine izin veren bir temsilci belirtir.

C#
public Thread (System.Threading.ParameterizedThreadStart start);

Parametreler

start
ParameterizedThreadStart

Bu iş parçacığı yürütülmeye başladığında çağrılacak yöntemleri temsil eden bir temsilci.

Özel durumlar

start, null değeridir.

Örnekler

Aşağıdaki örnekte, statik yöntem ve örnek yöntemiyle temsilci ParameterizedThreadStart oluşturma ve kullanma söz dizimi gösterilmektedir.

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

Bir iş parçacığı oluşturulduğunda yürütülmeye başlamıyor. İş parçacığını yürütme için zamanlamak için yöntemini çağırın Start . bir veri nesnesini iş parçacığına geçirmek için yöntemi aşırı yüklemesini Start(Object) kullanın.

Not

Visual Basic kullanıcıları bir iş parçacığı oluştururken oluşturucuyu ThreadStart atlayabilir. AddressOf yönteminizi geçirirken işlecini kullanın; örneğin, Dim t As New Thread(AddressOf ThreadProc). Visual Basic oluşturucuyu ThreadStart otomatik olarak çağırır.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ü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, 8, 9
.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, 4.8.1
.NET Standard 2.0, 2.1

Thread(ThreadStart)

Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs

Thread sınıfının yeni bir örneğini başlatır.

C#
public Thread (System.Threading.ThreadStart start);

Parametreler

start
ThreadStart

ThreadStart Bu iş parçacığı yürütülmeye başladığında çağrılacak yöntemleri temsil eden bir temsilci.

Özel durumlar

start parametresidirnull.

Örnekler

Aşağıdaki kod örneği, statik yöntem yürüten bir iş parçacığının nasıl oluşturulacağını gösterir.

C#
using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        Thread newThread = 
            new Thread(new ThreadStart(Work.DoWork));
        newThread.Start();
    }
}

class Work 
{
    Work() {}

    public static void DoWork() {}
}

Aşağıdaki kod örneği, örnek yöntemini yürüten bir iş parçacığının nasıl oluşturulacağını gösterir.

C#
using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        Work threadWork = new Work();
        Thread newThread = 
            new Thread(new ThreadStart(threadWork.DoWork));
        newThread.Start();
    }
}

class Work 
{
    public Work() {}

    public void DoWork() {}
}

Açıklamalar

Bir iş parçacığı oluşturulduğunda yürütülmeye başlamıyor. İş parçacığını yürütme için zamanlamak için yöntemini çağırın Start .

Not

Visual Basic kullanıcıları bir iş parçacığı oluştururken oluşturucuyu ThreadStart atlayabilir. AddressOf yönteminizi geçirirken işlecini kullanın; örneğin, Dim t As New Thread(AddressOf ThreadProc). Visual Basic oluşturucuyu ThreadStart otomatik olarak çağırır.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ü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, 8, 9
.NET Framework 1.1, 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, 4.8.1
.NET Standard 2.0, 2.1

Thread(ParameterizedThreadStart, Int32)

Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs

Sınıfın Thread yeni bir örneğini başlatır, iş parçacığı başlatıldığında nesnenin iş parçacığına geçirilmesine izin veren bir temsilci belirtir ve iş parçacığı için en büyük yığın boyutunu belirtir.

C#
public Thread (System.Threading.ParameterizedThreadStart start, int maxStackSize);

Parametreler

start
ParameterizedThreadStart

ParameterizedThreadStart Bu iş parçacığı yürütülmeye başladığında çağrılacak yöntemleri temsil eden bir temsilci.

maxStackSize
Int32

İş parçacığı tarafından kullanılacak bayt cinsinden en büyük yığın boyutu veya yürütülebilir dosyanın üst bilgisinde belirtilen varsayılan en büyük yığın boyutunu kullanmak için 0.

Önemli Kısmen güvenilen kod için, maxStackSize varsayılan yığın boyutundan büyükse yoksayılır. Özel durum oluşturulmaz.

Özel durumlar

start, null değeridir.

maxStackSize, sıfırdan küçüktür.

Açıklamalar

Bu oluşturucu aşırı yükleme kullanmaktan kaçının. Oluşturucu aşırı yüklemesi tarafından Thread(ParameterizedThreadStart) kullanılan varsayılan yığın boyutu, iş parçacıkları için önerilen yığın boyutudur. bir iş parçacığında bellek sorunları varsa, bunun en olası nedeni sonsuz özyineleme gibi programlama hatasıdır.

Önemli

.NET Framework 4'ten başlayarak, yalnızca tam olarak güvenilen kod varsayılan yığın boyutundan (1 megabayt) büyük bir değere ayarlanabilirmaxStackSize. Kod kısmi güvenle çalışırken için maxStackSize daha büyük bir değer belirtilirse, maxStackSize yoksayılır ve varsayılan yığın boyutu kullanılır. Özel durum oluşturulmaz. Herhangi bir güven düzeyindeki kod, varsayılan yığın boyutundan küçük bir değere ayarlanabilir maxStackSize .

Not

Kısmen güvenilen kod tarafından kullanılacak tam olarak güvenilen bir kitaplık geliştiriyorsanız ve büyük bir yığın gerektiren bir iş parçacığı başlatmanız gerekiyorsa, iş parçacığını oluşturmadan önce tam güven onaylamanız gerekir, aksi takdirde varsayılan yığın boyutu kullanılır. İş parçacığında çalışan kodu tam olarak denetlemediğiniz sürece bunu yapmayınız.

Minimum yığın boyutundan küçükse maxStackSize , minimum yığın boyutu kullanılır. Sayfa boyutunun katı değilse maxStackSize , sayfa boyutunun sonraki büyük katına yuvarlanmış olur.

Not

Microsoft Windows'un Windows XP ve Windows Server 2003 maxStackSize öncesi sürümlerinde yoksayılır ve yürütülebilir üst bilgide belirtilen yığın boyutu kullanılır.

Çok küçük bir yığın boyutu belirtirseniz, yığın taşması yoklama özelliğini devre dışı bırakmanız gerekebilir. Yığın ciddi şekilde kısıtlandığında, yoklamanın kendisi yığın taşmasına neden olabilir. Yığın taşması yoklama özelliğini devre dışı bırakmak için, .NET Framework bir uygulamadaki uygulama yapılandırma dosyanıza aşağıdakileri ekleyin.

XML
<configuration>
  <runtime>
    <disableStackOverflowProbing enabled="true"/>
  </runtime>
</configuration>

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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, 4.8.1
.NET Standard 2.0, 2.1

Thread(ThreadStart, Int32)

Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs

İş parçacığı için en büyük yığın boyutunu belirterek sınıfının yeni bir örneğini Thread başlatır.

C#
public Thread (System.Threading.ThreadStart start, int maxStackSize);

Parametreler

start
ThreadStart

ThreadStart Bu iş parçacığı yürütülmeye başladığında çağrılacak yöntemleri temsil eden bir temsilci.

maxStackSize
Int32

İş parçacığı tarafından kullanılacak bayt cinsinden en büyük yığın boyutu veya yürütülebilir dosyanın üst bilgisinde belirtilen varsayılan en büyük yığın boyutunu kullanmak için 0.

Önemli Kısmen güvenilen kod için, maxStackSize varsayılan yığın boyutundan büyükse yoksayılır. Özel durum oluşturulmaz.

Özel durumlar

start, null değeridir.

maxStackSize, sıfırdan küçüktür.

Açıklamalar

Bu oluşturucu aşırı yükleme kullanmaktan kaçının. Oluşturucu aşırı yüklemesi tarafından Thread(ThreadStart) kullanılan varsayılan yığın boyutu, iş parçacıkları için önerilen yığın boyutudur. bir iş parçacığında bellek sorunları varsa, bunun en olası nedeni sonsuz özyineleme gibi programlama hatasıdır.

Önemli

.NET Framework 4'ten başlayarak, yalnızca tam olarak güvenilen kod varsayılan yığın boyutundan (1 megabayt) büyük bir değere ayarlanabilirmaxStackSize. Kod kısmi güvenle çalışırken için maxStackSize daha büyük bir değer belirtilirse, maxStackSize yoksayılır ve varsayılan yığın boyutu kullanılır. Özel durum oluşturulmaz. Herhangi bir güven düzeyindeki kod, varsayılan yığın boyutundan küçük bir değere ayarlanabilir maxStackSize .

Not

Kısmen güvenilen kod tarafından kullanılacak tam olarak güvenilen bir kitaplık geliştiriyorsanız ve büyük bir yığın gerektiren bir iş parçacığı başlatmanız gerekiyorsa, iş parçacığını oluşturmadan önce tam güven onaylamanız gerekir, aksi takdirde varsayılan yığın boyutu kullanılır. İş parçacığında çalışan kodu tam olarak denetlemediğiniz sürece bunu yapmayınız.

Minimum yığın boyutundan küçükse maxStackSize , minimum yığın boyutu kullanılır. Sayfa boyutunun katı değilse maxStackSize , sayfa boyutunun sonraki büyük katına yuvarlanmış olur. Örneğin, Windows Vista'da .NET Framework 2.0 sürümünü kullanıyorsanız, en düşük yığın boyutu 256 KB (262.144 bayt) ve sayfa boyutu 64 KB (65.536 bayt) olur.

Not

Microsoft Windows'un Windows XP ve Windows Server 2003 maxStackSize öncesi sürümlerinde yoksayılır ve yürütülebilir üst bilgide belirtilen yığın boyutu kullanılır.

Çok küçük bir yığın boyutu belirtirseniz, yığın taşması yoklama özelliğini devre dışı bırakmanız gerekebilir. Yığın ciddi şekilde kısıtlandığında, yoklamanın kendisi yığın taşmasına neden olabilir. Yığın taşması yoklama özelliğini devre dışı bırakmak için, .NET Framework bir uygulamadaki uygulama yapılandırma dosyanıza aşağıdakileri ekleyin.

XML
<configuration>
  <runtime>
    <disableStackOverflowProbing enabled="true"/>
  </runtime>
</configuration>

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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, 4.8.1
.NET Standard 2.0, 2.1