Thread Konstruktor
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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>