Thread.Start Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.