Thread Konstruktorok

Definíció

Inicializálja a Thread osztály új példányát.

Túlterhelések

Name Description
Thread(ParameterizedThreadStart)

Inicializálja az Thread osztály új példányát, megadva egy delegáltat, amely lehetővé teszi, hogy egy objektumot a szál indításakor átadjon a szálnak.

Thread(ThreadStart)

Inicializálja a Thread osztály új példányát.

Thread(ParameterizedThreadStart, Int32)

Inicializálja az Thread osztály új példányát, megadva egy delegáltat, amely lehetővé teszi, hogy egy objektum átadható legyen a szálnak a szál indításakor, és megadja a szál maximális veremméretét.

Thread(ThreadStart, Int32)

Inicializálja az Thread osztály új példányát, megadva a szál maximális veremméretét.

Thread(ParameterizedThreadStart)

Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs

Inicializálja az Thread osztály új példányát, megadva egy delegáltat, amely lehetővé teszi, hogy egy objektumot a szál indításakor átadjon a szálnak.

public:
 Thread(System::Threading::ParameterizedThreadStart ^ start);
public Thread(System.Threading.ParameterizedThreadStart start);
new System.Threading.Thread : System.Threading.ParameterizedThreadStart -> System.Threading.Thread
Public Sub New (start As ParameterizedThreadStart)

Paraméterek

start
ParameterizedThreadStart

Egy meghatalmazott, amely a szál végrehajtásakor meghívandó metódusokat jelöli.

Kivételek

start az null.

Példák

Az alábbi példa egy statikus és egy példánymetódusú meghatalmazott létrehozására és használatára ParameterizedThreadStart vonatkozó szintaxist mutatja be.

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

Megjegyzések

A szál létrehozásakor nem indul el a végrehajtás. A szál végrehajtási ütemezéséhez hívja meg a metódust Start . Ha adatobjektumot szeretne átadni a szálnak, használja a metódus túlterhelését Start(Object) .

Note

Visual Basic felhasználók kihagyhatják a ThreadStart konstruktort egy szál létrehozásakor. Használja az AddressOf operátort a metódus átadásakor, például Dim t As New Thread(AddressOf ThreadProc): . Visual Basic automatikusan meghívja a ThreadStart konstruktort.

Lásd még

A következőre érvényes:

Thread(ThreadStart)

Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs

Inicializálja a Thread osztály új példányát.

public:
 Thread(System::Threading::ThreadStart ^ start);
public Thread(System.Threading.ThreadStart start);
new System.Threading.Thread : System.Threading.ThreadStart -> System.Threading.Thread
Public Sub New (start As ThreadStart)

Paraméterek

start
ThreadStart

Egy ThreadStart meghatalmazott, amely a szál végrehajtásakor meghívandó metódusokat jelöli.

Kivételek

A start paraméter a következő null: .

Példák

Az alábbi példakód bemutatja, hogyan hozhat létre statikus metódust végrehajtó szálat.

using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        Thread newThread = 
            new Thread(new ThreadStart(Work.DoWork));
        newThread.Start();
    }
}

class Work 
{
    Work() {}

    public static void DoWork() {}
}
open System.Threading

module Work =
    let doWork () = ()

let newThread = Thread(ThreadStart Work.doWork)
newThread.Start()
Imports System.Threading

Public Class Test
    <MTAThread> _
    Shared Sub Main()
        Dim newThread As New Thread(AddressOf Work.DoWork)
        newThread.Start()
    End Sub
End Class

Public Class Work 

    Private Sub New()
    End Sub

    Shared Sub DoWork()
    End Sub

End Class

Az alábbi példakód bemutatja, hogyan hozhat létre egy példánymetódust végrehajtó szálat.

using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        Work threadWork = new Work();
        Thread newThread = 
            new Thread(new ThreadStart(threadWork.DoWork));
        newThread.Start();
    }
}

class Work 
{
    public Work() {}

    public void DoWork() {}
}
open System.Threading

type Work() =
    member _.DoWork() = ()

let threadWork = Work()
let newThread = Thread(ThreadStart threadWork.DoWork)
newThread.Start()
Imports System.Threading

Public Class Test
    <MTAThread> _
    Shared Sub Main() 
        Dim threadWork As New Work()
        Dim newThread As New Thread(AddressOf threadWork.DoWork)
        newThread.Start()
    End Sub
End Class

Public Class Work

    Sub New()
    End Sub

    Sub DoWork() 
    End Sub

End Class

Megjegyzések

A szál létrehozásakor nem indul el a végrehajtás. A szál végrehajtási ütemezéséhez hívja meg a metódust Start .

Note

Visual Basic felhasználók kihagyhatják a ThreadStart konstruktort egy szál létrehozásakor. Használja az AddressOf operátort a metódus átadásakor, például Dim t As New Thread(AddressOf ThreadProc): . Visual Basic automatikusan meghívja a ThreadStart konstruktort.

Lásd még

A következőre érvényes:

Thread(ParameterizedThreadStart, Int32)

Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs

Inicializálja az Thread osztály új példányát, megadva egy delegáltat, amely lehetővé teszi, hogy egy objektum átadható legyen a szálnak a szál indításakor, és megadja a szál maximális veremméretét.

public:
 Thread(System::Threading::ParameterizedThreadStart ^ start, int maxStackSize);
public Thread(System.Threading.ParameterizedThreadStart start, int maxStackSize);
new System.Threading.Thread : System.Threading.ParameterizedThreadStart * int -> System.Threading.Thread
Public Sub New (start As ParameterizedThreadStart, maxStackSize As Integer)

Paraméterek

start
ParameterizedThreadStart

Egy ParameterizedThreadStart meghatalmazott, amely a szál végrehajtásakor meghívandó metódusokat jelöli.

maxStackSize
Int32

A szál által használandó maximális veremméret bájtban, vagy 0 a végrehajtható fejlécben megadott alapértelmezett maximális veremméret használatára.

A részlegesen megbízható kód esetében a rendszer figyelmen kívül hagyja, maxStackSize ha nagyobb az alapértelmezett veremméretnél. Nincs kivétel.

Kivételek

start az null.

maxStackSize kisebb, mint nulla.

Megjegyzések

Kerülje a konstruktor túlterhelését. A konstruktor túlterhelése által Thread(ParameterizedThreadStart) használt alapértelmezett veremméret a szálak ajánlott veremmérete. Ha egy szál memóriaproblémával rendelkezik, a legvalószínűbb ok a programozási hiba, például a végtelen rekurzió.

Important

A .NET Framework 4-től kezdve csak a teljes mértékben megbízható kód állíthat be maxStackSize az alapértelmezett veremméretnél (1 megabájt) nagyobb értékre. Ha nagyobb érték van megadva maxStackSize , amikor a kód részleges megbízhatósággal fut, maxStackSize a rendszer figyelmen kívül hagyja, és az alapértelmezett veremméretet használja. Nincs kivétel. A kód bármely megbízhatósági szinten beállítható maxStackSize olyan értékre, amely kisebb, mint az alapértelmezett veremméret.

Note

Ha olyan teljes mértékben megbízható kódtárat fejleszt, amelyet részben megbízható kód fog használni, és egy nagy vermet igénylő szálat kell elindítania, a szál létrehozása előtt teljes megbízhatóságot kell érvényesítenie, vagy az alapértelmezett veremméretet kell használnia. Ezt csak akkor tegye, ha teljes mértékben szabályozza a szálon futó kódot.

Ha maxStackSize kisebb, mint a minimális veremméret, a rendszer a minimális veremméretet használja. Ha maxStackSize nem az oldalméret többszöröse, akkor a lapméret következő nagyobb többszörösére lesz kerekítve.

Note

A Microsoft Windows 2003 Windows XP és Windows Server előtti verzióiban a maxStackSize figyelmen kívül lesz hagyva, és a végrehajtható fejlécben megadott veremméret lesz használva.

Ha nagyon kicsi veremméretet ad meg, előfordulhat, hogy le kell tiltania a verem túlcsordulását. Ha a verem szigorúan korlátozott, a próba maga is okozhat egy verem túlcsordulását. A verem túlcsordulásának letiltásához adja hozzá a következőket az alkalmazáskonfigurációs fájlhoz egy .NET-keretrendszeralkalmazásban.

<configuration>
  <runtime>
    <disableStackOverflowProbing enabled="true"/>
  </runtime>
</configuration>

A következőre érvényes:

Thread(ThreadStart, Int32)

Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs
Forrás:
Thread.cs

Inicializálja az Thread osztály új példányát, megadva a szál maximális veremméretét.

public:
 Thread(System::Threading::ThreadStart ^ start, int maxStackSize);
public Thread(System.Threading.ThreadStart start, int maxStackSize);
new System.Threading.Thread : System.Threading.ThreadStart * int -> System.Threading.Thread
Public Sub New (start As ThreadStart, maxStackSize As Integer)

Paraméterek

start
ThreadStart

Egy ThreadStart meghatalmazott, amely a szál végrehajtásakor meghívandó metódusokat jelöli.

maxStackSize
Int32

A szál által használandó maximális veremméret bájtban, vagy 0 a végrehajtható fejlécben megadott alapértelmezett maximális veremméret használatára.

A részlegesen megbízható kód esetében a rendszer figyelmen kívül hagyja, maxStackSize ha nagyobb az alapértelmezett veremméretnél. Nincs kivétel.

Kivételek

start az null.

maxStackSize kisebb, mint nulla.

Megjegyzések

Kerülje a konstruktor túlterhelését. A konstruktor túlterhelése által Thread(ThreadStart) használt alapértelmezett veremméret a szálak ajánlott veremmérete. Ha egy szál memóriaproblémával rendelkezik, a legvalószínűbb ok a programozási hiba, például a végtelen rekurzió.

Important

A .NET Framework 4-től kezdve csak a teljes mértékben megbízható kód állíthat be maxStackSize az alapértelmezett veremméretnél (1 megabájt) nagyobb értékre. Ha nagyobb érték van megadva maxStackSize , amikor a kód részleges megbízhatósággal fut, maxStackSize a rendszer figyelmen kívül hagyja, és az alapértelmezett veremméretet használja. Nincs kivétel. A kód bármely megbízhatósági szinten beállítható maxStackSize olyan értékre, amely kisebb, mint az alapértelmezett veremméret.

Note

Ha olyan teljes mértékben megbízható kódtárat fejleszt, amelyet részben megbízható kód fog használni, és egy nagy vermet igénylő szálat kell elindítania, a szál létrehozása előtt teljes megbízhatóságot kell érvényesítenie, vagy az alapértelmezett veremméretet kell használnia. Ezt csak akkor tegye, ha teljes mértékben szabályozza a szálon futó kódot.

Ha maxStackSize kisebb, mint a minimális veremméret, a rendszer a minimális veremméretet használja. Ha maxStackSize nem az oldalméret többszöröse, akkor a lapméret következő nagyobb többszörösére lesz kerekítve. Ha például a .NET-keretrendszer 2.0-s verzióját használja Windows Vista, akkor a minimális veremméret 256 KB (262 144 bájt), az oldalméret pedig 64 KB (65 536 bájt).

Note

A Microsoft Windows 2003 Windows XP és Windows Server előtti verzióiban a maxStackSize figyelmen kívül lesz hagyva, és a végrehajtható fejlécben megadott veremméret lesz használva.

Ha nagyon kicsi veremméretet ad meg, előfordulhat, hogy le kell tiltania a verem túlcsordulását. Ha a verem szigorúan korlátozott, a próba maga is okozhat egy verem túlcsordulását. A verem túlcsordulásának letiltásához adja hozzá a következőket az alkalmazáskonfigurációs fájlhoz egy .NET-keretrendszeralkalmazásban.

<configuration>
  <runtime>
    <disableStackOverflowProbing enabled="true"/>
  </runtime>
</configuration>

A következőre érvényes: