Thread Konstruktor

Definisi

Menginisialisasi instans baru dari kelas Thread.

Overload

Nama Deskripsi
Thread(ParameterizedThreadStart)

Menginisialisasi instans Thread baru kelas, menentukan delegasi yang memungkinkan objek diteruskan ke utas saat utas dimulai.

Thread(ThreadStart)

Menginisialisasi instans baru dari kelas Thread.

Thread(ParameterizedThreadStart, Int32)

Menginisialisasi instans Thread baru kelas, menentukan delegasi yang memungkinkan objek diteruskan ke utas saat utas dimulai dan menentukan ukuran tumpukan maksimum untuk utas.

Thread(ThreadStart, Int32)

Menginisialisasi instans Thread baru kelas, menentukan ukuran tumpukan maksimum untuk utas.

Thread(ParameterizedThreadStart)

Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs

Menginisialisasi instans Thread baru kelas, menentukan delegasi yang memungkinkan objek diteruskan ke utas saat utas dimulai.

public:
 Thread(System::Threading::ParameterizedThreadStart ^ start);
public Thread(System.Threading.ParameterizedThreadStart start);
new System.Threading.Thread : System.Threading.ParameterizedThreadStart -> System.Threading.Thread
Public Sub New (start As ParameterizedThreadStart)

Parameter

start
ParameterizedThreadStart

Delegasi yang mewakili metode yang akan dipanggil ketika utas ini mulai dijalankan.

Pengecualian

start adalah null.

Contoh

Contoh berikut menunjukkan sintaks untuk membuat dan menggunakan ParameterizedThreadStart delegasi dengan metode statis dan metode instans.

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

type Work() =
    static member DoWork(data: obj) =
        printfn $"Static thread procedure. Data='{data}'"

    member _.DoMoreWork(data: obj) =
        printfn $"Instance thread procedure. Data='{data}'"

// Start a thread that calls a parameterized static method.
let newThread = Thread(ParameterizedThreadStart Work.DoWork)
newThread.Start 42

// Start a thread that calls a parameterized instance method.
let w = Work()
let newThread2 = Thread(ParameterizedThreadStart w.DoMoreWork)
newThread.Start "The answer."

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

Keterangan

Utas tidak mulai dijalankan saat dibuat. Untuk menjadwalkan utas untuk eksekusi, panggil Start metode . Untuk meneruskan objek data ke utas, gunakan Start(Object) metode kelebihan beban.

Note

Visual Basic pengguna dapat menghilangkan konstruktor ThreadStart saat membuat utas. AddressOf Gunakan operator saat meneruskan metode Anda, misalnya, Dim t As New Thread(AddressOf ThreadProc). Visual Basic secara otomatis memanggil konstruktor ThreadStart.

Lihat juga

Berlaku untuk

Thread(ThreadStart)

Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs

Menginisialisasi instans baru dari kelas Thread.

public:
 Thread(System::Threading::ThreadStart ^ start);
public Thread(System.Threading.ThreadStart start);
new System.Threading.Thread : System.Threading.ThreadStart -> System.Threading.Thread
Public Sub New (start As ThreadStart)

Parameter

start
ThreadStart

ThreadStart Delegasi yang mewakili metode yang akan dipanggil ketika utas ini mulai dijalankan.

Pengecualian

Parameternya start adalah null.

Contoh

Contoh kode berikut menunjukkan cara membuat utas yang menjalankan metode statis.

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() {}
}
open System.Threading

module Work =
    let doWork () = ()

let newThread = Thread(ThreadStart Work.doWork)
newThread.Start()
Imports System.Threading

Public Class Test
    <MTAThread> _
    Shared Sub Main()
        Dim newThread As New Thread(AddressOf Work.DoWork)
        newThread.Start()
    End Sub
End Class

Public Class Work 

    Private Sub New()
    End Sub

    Shared Sub DoWork()
    End Sub

End Class

Contoh kode berikut menunjukkan cara membuat utas yang menjalankan metode instans.

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() {}
}
open System.Threading

type Work() =
    member _.DoWork() = ()

let threadWork = Work()
let newThread = Thread(ThreadStart threadWork.DoWork)
newThread.Start()
Imports System.Threading

Public Class Test
    <MTAThread> _
    Shared Sub Main() 
        Dim threadWork As New Work()
        Dim newThread As New Thread(AddressOf threadWork.DoWork)
        newThread.Start()
    End Sub
End Class

Public Class Work

    Sub New()
    End Sub

    Sub DoWork() 
    End Sub

End Class

Keterangan

Utas tidak mulai dijalankan saat dibuat. Untuk menjadwalkan utas untuk eksekusi, panggil Start metode .

Note

Visual Basic pengguna dapat menghilangkan konstruktor ThreadStart saat membuat utas. AddressOf Gunakan operator saat meneruskan metode Anda, misalnya, Dim t As New Thread(AddressOf ThreadProc). Visual Basic secara otomatis memanggil konstruktor ThreadStart.

Lihat juga

Berlaku untuk

Thread(ParameterizedThreadStart, Int32)

Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs

Menginisialisasi instans Thread baru kelas, menentukan delegasi yang memungkinkan objek diteruskan ke utas saat utas dimulai dan menentukan ukuran tumpukan maksimum untuk utas.

public:
 Thread(System::Threading::ParameterizedThreadStart ^ start, int maxStackSize);
public Thread(System.Threading.ParameterizedThreadStart start, int maxStackSize);
new System.Threading.Thread : System.Threading.ParameterizedThreadStart * int -> System.Threading.Thread
Public Sub New (start As ParameterizedThreadStart, maxStackSize As Integer)

Parameter

start
ParameterizedThreadStart

ParameterizedThreadStart Delegasi yang mewakili metode yang akan dipanggil ketika utas ini mulai dijalankan.

maxStackSize
Int32

Ukuran tumpukan maksimum, dalam byte, yang akan digunakan oleh utas, atau 0 untuk menggunakan ukuran tumpukan maksimum default yang ditentukan di header untuk yang dapat dieksekusi.

Penting Untuk kode tepercaya sebagian, maxStackSize diabaikan jika lebih besar dari ukuran tumpukan default. Tidak ada pengecualian yang dilemparkan.

Pengecualian

start adalah null.

maxStackSize kurang dari nol.

Keterangan

Hindari menggunakan kelebihan beban konstruktor ini. Ukuran tumpukan default yang Thread(ParameterizedThreadStart) digunakan oleh kelebihan beban konstruktor adalah ukuran tumpukan yang direkomendasikan untuk utas. Jika utas memiliki masalah memori, penyebab paling mungkin adalah kesalahan pemrograman, seperti rekursi tak terbatas.

Important

Dimulai dengan .NET Framework 4, hanya kode yang sepenuhnya tepercaya yang dapat mengatur maxStackSize ke nilai yang lebih besar dari ukuran tumpukan default (1 megabyte). Jika nilai yang lebih besar ditentukan maxStackSize saat kode berjalan dengan kepercayaan parsial, maxStackSize diabaikan dan ukuran tumpukan default digunakan. Tidak ada pengecualian yang dilemparkan. Kode pada tingkat kepercayaan apa pun dapat diatur maxStackSize ke nilai yang kurang dari ukuran tumpukan default.

Note

Jika Anda mengembangkan pustaka tepercaya sepenuhnya yang akan digunakan oleh kode tepercaya sebagian, dan Anda perlu memulai utas yang memerlukan tumpukan besar, Anda harus menegaskan kepercayaan penuh sebelum membuat utas, atau ukuran tumpukan default akan digunakan. Jangan lakukan ini kecuali Anda sepenuhnya mengontrol kode yang berjalan pada utas.

Jika maxStackSize kurang dari ukuran tumpukan minimum, ukuran tumpukan minimum digunakan. Jika maxStackSize bukan kelipatan ukuran halaman, ukuran halaman dibulatkan ke kelipatan ukuran halaman berikutnya yang lebih besar.

Note

Pada versi Microsoft Windows sebelum Windows XP dan Windows Server 2003, maxStackSize diabaikan, dan ukuran tumpukan yang ditentukan dalam header yang dapat dieksekusi digunakan.

Jika Anda menentukan ukuran tumpukan yang sangat kecil, Anda mungkin perlu menonaktifkan pemeriksaan stack-overflow. Ketika tumpukan sangat dibatasi, pemeriksaan itu sendiri dapat menyebabkan luapan tumpukan. Untuk menonaktifkan pemeriksaan luapan tumpukan, tambahkan yang berikut ini ke file konfigurasi aplikasi Anda di aplikasi .NET Framework.

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

Berlaku untuk

Thread(ThreadStart, Int32)

Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs
Sumber:
Thread.cs

Menginisialisasi instans Thread baru kelas, menentukan ukuran tumpukan maksimum untuk utas.

public:
 Thread(System::Threading::ThreadStart ^ start, int maxStackSize);
public Thread(System.Threading.ThreadStart start, int maxStackSize);
new System.Threading.Thread : System.Threading.ThreadStart * int -> System.Threading.Thread
Public Sub New (start As ThreadStart, maxStackSize As Integer)

Parameter

start
ThreadStart

ThreadStart Delegasi yang mewakili metode yang akan dipanggil ketika utas ini mulai dijalankan.

maxStackSize
Int32

Ukuran tumpukan maksimum, dalam byte, yang akan digunakan oleh utas, atau 0 untuk menggunakan ukuran tumpukan maksimum default yang ditentukan di header untuk yang dapat dieksekusi.

Penting Untuk kode tepercaya sebagian, maxStackSize diabaikan jika lebih besar dari ukuran tumpukan default. Tidak ada pengecualian yang dilemparkan.

Pengecualian

start adalah null.

maxStackSize kurang dari nol.

Keterangan

Hindari menggunakan kelebihan beban konstruktor ini. Ukuran tumpukan default yang Thread(ThreadStart) digunakan oleh kelebihan beban konstruktor adalah ukuran tumpukan yang direkomendasikan untuk utas. Jika utas memiliki masalah memori, penyebab paling mungkin adalah kesalahan pemrograman, seperti rekursi tak terbatas.

Important

Dimulai dengan .NET Framework 4, hanya kode yang sepenuhnya tepercaya yang dapat mengatur maxStackSize ke nilai yang lebih besar dari ukuran tumpukan default (1 megabyte). Jika nilai yang lebih besar ditentukan maxStackSize saat kode berjalan dengan kepercayaan parsial, maxStackSize diabaikan dan ukuran tumpukan default digunakan. Tidak ada pengecualian yang dilemparkan. Kode pada tingkat kepercayaan apa pun dapat diatur maxStackSize ke nilai yang kurang dari ukuran tumpukan default.

Note

Jika Anda mengembangkan pustaka tepercaya sepenuhnya yang akan digunakan oleh kode tepercaya sebagian, dan Anda perlu memulai utas yang memerlukan tumpukan besar, Anda harus menegaskan kepercayaan penuh sebelum membuat utas, atau ukuran tumpukan default akan digunakan. Jangan lakukan ini kecuali Anda sepenuhnya mengontrol kode yang berjalan pada utas.

Jika maxStackSize kurang dari ukuran tumpukan minimum, ukuran tumpukan minimum digunakan. Jika maxStackSize bukan kelipatan ukuran halaman, ukuran halaman dibulatkan ke kelipatan ukuran halaman berikutnya yang lebih besar. Misalnya, jika Anda menggunakan .NET Framework versi 2.0 pada Windows Vista, 256KB (262.144 byte) adalah ukuran tumpukan minimum, dan ukuran halaman adalah 64KB (65.536 byte).

Note

Pada versi Microsoft Windows sebelum Windows XP dan Windows Server 2003, maxStackSize diabaikan, dan ukuran tumpukan yang ditentukan dalam header yang dapat dieksekusi digunakan.

Jika Anda menentukan ukuran tumpukan yang sangat kecil, Anda mungkin perlu menonaktifkan pemeriksaan stack-overflow. Ketika tumpukan sangat dibatasi, pemeriksaan itu sendiri dapat menyebabkan luapan tumpukan. Untuk menonaktifkan pemeriksaan luapan tumpukan, tambahkan yang berikut ini ke file konfigurasi aplikasi Anda di aplikasi .NET Framework.

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

Berlaku untuk