Thread.Start Methode

Definitie

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.

Zie ook

Van toepassing op