Thread.Start Metode
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.
Menyebabkan utas dijadwalkan untuk dieksekusi.
Overload
| Nama | Deskripsi |
|---|---|
| Start() |
Menyebabkan sistem operasi mengubah status instans saat ini menjadi Running. |
| Start(Object) |
Menyebabkan sistem operasi mengubah status instans saat ini menjadi Running, dan secara opsional memasok objek yang berisi data untuk digunakan oleh metode yang dijalankan utas. |
Start()
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
Menyebabkan sistem operasi mengubah status instans saat ini menjadi Running.
public:
void Start();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void Start();
public void Start();
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
member this.Start : unit -> unit
member this.Start : unit -> unit
Public Sub Start ()
- Atribut
Pengecualian
Utas sudah dimulai.
Tidak tersedia cukup memori untuk memulai utas ini.
Contoh
Contoh berikut membuat dan memulai utas.
using System;
using System.Threading;
public class ThreadWork
{
public static void DoWork()
{
for(int i = 0; i<3;i++) {
Console.WriteLine("Working thread...");
Thread.Sleep(100);
}
}
}
class ThreadTest
{
public static void Main()
{
Thread thread1 = new Thread(ThreadWork.DoWork);
thread1.Start();
for (int i = 0; i<3; i++) {
Console.WriteLine("In main.");
Thread.Sleep(100);
}
}
}
// The example displays output like the following:
// In main.
// Working thread...
// In main.
// Working thread...
// In main.
// Working thread...
open System.Threading
module ThreadWork =
let doWork () =
for _ = 0 to 2 do
printfn "Working thread..."
Thread.Sleep 100
let thread1 = Thread ThreadWork.doWork
thread1.Start()
for _ = 0 to 2 do
printfn "In main."
Thread.Sleep 100
// The example displays output like the following:
// In main.
// Working thread...
// In main.
// Working thread...
// In main.
// Working thread...
Imports System.Threading
Public Class ThreadWork
Public Shared Sub DoWork()
Dim i As Integer
For i = 0 To 2
Console.WriteLine("Working thread...")
Thread.Sleep(100)
Next i
End Sub
End Class
Class ThreadTest
Public Shared Sub Main()
Dim thread1 As New Thread(AddressOf ThreadWork.DoWork)
thread1.Start()
Dim i As Integer
For i = 0 To 2
Console.WriteLine("In main.")
Thread.Sleep(100)
Next
End Sub
End Class
' The example displays output like the following:
' In main.
' Working thread...
' In main.
' Working thread...
' In main.
' Working thread...
Keterangan
Setelah utas dalam ThreadState.Running keadaan, sistem operasi dapat menjadwalkannya untuk eksekusi. Utas mulai dijalankan pada baris pertama metode yang diwakili oleh ThreadStart atau ParameterizedThreadStart delegasi yang disediakan ke konstruktor utas. Perhatikan bahwa panggilan ke Start tidak memblokir utas panggilan.
Note
Jika kelebihan beban ini digunakan dengan utas yang dibuat menggunakan ParameterizedThreadStart delegasi, null diteruskan ke metode yang dijalankan oleh utas.
Setelah utas berakhir, utas tidak dapat dimulai ulang dengan panggilan lain ke Start.
Lihat juga
Berlaku untuk
Start(Object)
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
Menyebabkan sistem operasi mengubah status instans saat ini menjadi Running, dan secara opsional memasok objek yang berisi data untuk digunakan oleh metode yang dijalankan utas.
public:
void Start(System::Object ^ parameter);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void Start(object? parameter);
public void Start(object? parameter);
public void Start(object parameter);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
member this.Start : obj -> unit
member this.Start : obj -> unit
Public Sub Start (parameter As Object)
Parameter
- parameter
- Object
Objek yang berisi data yang akan digunakan oleh metode yang dijalankan utas.
- Atribut
Pengecualian
Utas sudah dimulai.
Tidak tersedia cukup memori untuk memulai utas ini.
Utas ini dibuat menggunakan ThreadStart delegasi alih-alih ParameterizedThreadStart delegasi.
Contoh
Contoh berikut membuat 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
Setelah utas dalam ThreadState.Running keadaan, sistem operasi dapat menjadwalkannya untuk eksekusi. Utas mulai dijalankan pada baris pertama metode yang diwakili oleh ThreadStart atau ParameterizedThreadStart delegasi yang disediakan ke konstruktor utas. Perhatikan bahwa panggilan ke Start tidak memblokir utas panggilan.
Setelah utas berakhir, utas tidak dapat dimulai ulang dengan panggilan lain ke Start.
Kelebihan beban ini dan ParameterizedThreadStart delegasi memudahkan untuk meneruskan data ke prosedur utas, tetapi tekniknya tidak aman karena objek apa pun dapat diteruskan ke kelebihan beban ini. Cara yang lebih kuat untuk meneruskan data ke prosedur utas adalah dengan menempatkan prosedur utas dan bidang data ke dalam objek pekerja. Untuk informasi selengkapnya, lihat Membuat Utas dan Meneruskan Data pada Waktu Mulai.