Thread.Start Metod

Definition

Gör att en tråd schemaläggs för körning.

Överlagringar

Name Description
Start()

Gör att operativsystemet ändrar tillståndet för den aktuella instansen till Running.

Start(Object)

Gör att operativsystemet ändrar tillståndet för den aktuella instansen till Runningoch eventuellt tillhandahåller ett objekt som innehåller data som ska användas av metoden som tråden kör.

Start()

Källa:
Thread.cs
Källa:
Thread.cs
Källa:
Thread.cs
Källa:
Thread.cs
Källa:
Thread.cs

Gör att operativsystemet ändrar tillståndet för den aktuella instansen till 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 ()
Attribut

Undantag

Tråden har redan startats.

Det finns inte tillräckligt med minne för att starta den här tråden.

Exempel

I följande exempel skapas och startas en tråd.

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

Kommentarer

När en tråd är i ThreadState.Running tillståndet kan operativsystemet schemalägga den för körning. Tråden börjar köras på den första raden i metoden som representeras av ThreadStart eller ParameterizedThreadStart delegeras till trådkonstruktorn. Observera att anropet till Start inte blockerar den anropande tråden.

Note

Om den här överlagringen används med en tråd som skapats med hjälp av ett ParameterizedThreadStart ombud skickas null den metod som körs av tråden.

När tråden har avslutats kan den inte startas om med ett annat anrop till Start.

Se även

Gäller för

Start(Object)

Källa:
Thread.cs
Källa:
Thread.cs
Källa:
Thread.cs
Källa:
Thread.cs
Källa:
Thread.cs

Gör att operativsystemet ändrar tillståndet för den aktuella instansen till Runningoch eventuellt tillhandahåller ett objekt som innehåller data som ska användas av metoden som tråden kör.

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)

Parametrar

parameter
Object

Ett objekt som innehåller data som ska användas av metoden som tråden kör.

Attribut

Undantag

Tråden har redan startats.

Det finns inte tillräckligt med minne för att starta den här tråden.

Den här tråden skapades med hjälp av ett ThreadStart ombud i stället för ett ParameterizedThreadStart ombud.

Exempel

I följande exempel skapas ett ParameterizedThreadStart ombud med en statisk metod och en instansmetod.

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

Kommentarer

När en tråd är i ThreadState.Running tillståndet kan operativsystemet schemalägga den för körning. Tråden börjar köras på den första raden i metoden som representeras av ThreadStart eller ParameterizedThreadStart delegeras till trådkonstruktorn. Observera att anropet till Start inte blockerar den anropande tråden.

När tråden har avslutats kan den inte startas om med ett annat anrop till Start.

Den här överlagringen och ombudet ParameterizedThreadStart gör det enkelt att skicka data till en trådprocedur, men tekniken är inte typsäker eftersom alla objekt kan skickas till den här överbelastningen. Ett mer robust sätt att skicka data till en trådprocedur är att placera både trådproceduren och datafälten i ett arbetsobjekt. Mer information finns i Skapa trådar och skicka data vid starttid.

Se även

Gäller för