Thread.Start Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Zorgt ervoor dat een thread wordt gepland voor uitvoering.
Overloads
| Name | Description |
|---|---|
| Start() |
Zorgt ervoor dat het besturingssysteem de status van het huidige exemplaar wijzigt in Running. |
| Start(Object) |
Zorgt ervoor dat het besturingssysteem de status van het huidige exemplaar Runningwijzigt in en optioneel een object levert dat gegevens bevat die moeten worden gebruikt door de methode die door de thread wordt uitgevoerd. |
Start()
Zorgt ervoor dat het besturingssysteem de status van het huidige exemplaar wijzigt in Running.
public:
void Start();
public void Start();
member this.Start : unit -> unit
Public Sub Start ()
Uitzonderingen
De thread is al gestart.
Er is onvoldoende geheugen beschikbaar om deze thread te starten.
Voorbeelden
In het volgende voorbeeld wordt een thread gemaakt en gestart.
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...
Opmerkingen
Zodra een thread de ThreadState.Running status heeft, kan het besturingssysteem dit plannen voor uitvoering. De thread wordt uitgevoerd op de eerste regel van de methode die wordt vertegenwoordigd door de ThreadStart of ParameterizedThreadStart gemachtigde die aan de threadconstructor is geleverd. Houd er rekening mee dat de aanroep om Start de aanroepthread niet blokkeert.
Note
Als deze overbelasting wordt gebruikt met een thread die is gemaakt met behulp van een ParameterizedThreadStart gemachtigde, null wordt deze doorgegeven aan de methode die door de thread wordt uitgevoerd.
Zodra de thread is beëindigd, kan deze niet opnieuw worden gestart met een andere aanroep naar Start.
Zie ook
Van toepassing op
Start(Object)
Zorgt ervoor dat het besturingssysteem de status van het huidige exemplaar Runningwijzigt in en optioneel een object levert dat gegevens bevat die moeten worden gebruikt door de methode die door de thread wordt uitgevoerd.
public:
void Start(System::Object ^ parameter);
public void Start(object parameter);
member this.Start : obj -> unit
Public Sub Start (parameter As Object)
Parameters
- parameter
- Object
Een object dat gegevens bevat die moeten worden gebruikt door de methode die door de thread wordt uitgevoerd.
Uitzonderingen
De thread is al gestart.
Er is onvoldoende geheugen beschikbaar om deze thread te starten.
Deze thread is gemaakt met behulp van een ThreadStart gemachtigde in plaats van een ParameterizedThreadStart gemachtigde.
Voorbeelden
In het volgende voorbeeld wordt een ParameterizedThreadStart gemachtigde gemaakt met een statische methode en een instantiemethode.
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.'
Opmerkingen
Zodra een thread de ThreadState.Running status heeft, kan het besturingssysteem dit plannen voor uitvoering. De thread wordt uitgevoerd op de eerste regel van de methode die wordt vertegenwoordigd door de ThreadStart of ParameterizedThreadStart gemachtigde die aan de threadconstructor is geleverd. Houd er rekening mee dat de aanroep om Start de aanroepthread niet blokkeert.
Zodra de thread is beëindigd, kan deze niet opnieuw worden gestart met een andere aanroep naar Start.
Deze overbelasting en de ParameterizedThreadStart gedelegeerde maken het gemakkelijk om gegevens door te geven aan een threadprocedure, maar de techniek is niet veilig omdat elk object kan worden doorgegeven aan deze overbelasting. Een krachtigere manier om gegevens door te geven aan een threadprocedure is door zowel de threadprocedure als de gegevensvelden in een werkrolobject te plaatsen. Zie Threads maken en gegevens doorgeven bij de begintijd voor meer informatie.