Thread Konstruktorok
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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>