ThreadPool ThreadPool ThreadPool ThreadPool Class

Definition

Stellt einen Threadpool bereit, der verwendet werden kann, um Aufgaben auszuführen, Arbeitsaufgaben bereitzustellen, asynchrone E/A zu verarbeiten, im Auftrag anderer Threads zu warten und Zeitgeber zu verarbeiten.Provides a pool of threads that can be used to execute tasks, post work items, process asynchronous I/O, wait on behalf of other threads, and process timers.

public ref class ThreadPool abstract sealed
public static class ThreadPool
type ThreadPool = class
Public Class ThreadPool
Vererbung
ThreadPoolThreadPoolThreadPoolThreadPool

Beispiele

Im folgenden Beispiel fügt der Haupt Anwendungs Thread eine Methode mit dem Namen ThreadProc für die Ausführung in einem Thread Pool Thread in die Warteschlange ein, wird für eine Sekunde einschlafen und wird dann beendet.In the following example, the main application thread queues a method named ThreadProc to execute on a thread pool thread, sleeps for one second, and then exits. Die ThreadProc -Methode zeigt einfach eine Meldung an.The ThreadProc method simply displays a message.

using namespace System;
using namespace System::Threading;

ref class Example
{
public:

   // This thread procedure performs the task.
   static void ThreadProc(Object^ stateInfo)
   {
      
      // No state object was passed to QueueUserWorkItem, so stateInfo is 0.
      Console::WriteLine( "Hello from the thread pool." );
   }
};

int main()
{
   // Queue the task.
   ThreadPool::QueueUserWorkItem(gcnew WaitCallback(Example::ThreadProc));

   Console::WriteLine("Main thread does some work, then sleeps.");
   
   Thread::Sleep(1000);
   Console::WriteLine("Main thread exits.");
   return 0;
}
// The example displays output like the following:
//       Main thread does some work, then sleeps.
//       Hello from the thread pool.
//       Main thread exits.
using System;
using System.Threading;

public class Example 
{
    public static void Main() 
    {
        // Queue the task.
        ThreadPool.QueueUserWorkItem(ThreadProc);
        Console.WriteLine("Main thread does some work, then sleeps.");
        Thread.Sleep(1000);

        Console.WriteLine("Main thread exits.");
    }

    // This thread procedure performs the task.
    static void ThreadProc(Object stateInfo) 
    {
        // No state object was passed to QueueUserWorkItem, so stateInfo is null.
        Console.WriteLine("Hello from the thread pool.");
    }
}
// The example displays output like the following:
//       Main thread does some work, then sleeps.
//       Hello from the thread pool.
//       Main thread exits.
Imports System.Threading

Public Module Example
    Public Sub Main()
        ' Queue the work for execution.
        ThreadPool.QueueUserWorkItem(AddressOf ThreadProc)
        
        Console.WriteLine("Main thread does some work, then sleeps.")

        Thread.Sleep(1000)

        Console.WriteLine("Main thread exits.")
    End Sub

    ' This thread procedure performs the task.
    Sub ThreadProc(stateInfo As Object)
        ' No state object was passed to QueueUserWorkItem, so stateInfo is null.
        Console.WriteLine("Hello from the thread pool.")
    End Sub
End Module
' The example displays output like the following:
'       Main thread does some work, then sleeps.
'       Hello from the thread pool.
'       Main thread exits.

Wenn Sie den- Thread.Sleep Methoden aufzurufen, wird der Haupt Thread beendet, bevor die-Methode im Thread Pool Thread ausgeführt wird.If you comment out the call to the Thread.Sleep method, the main thread exits before method runs on the thread pool thread. Der Thread Pool verwendet Hintergrundthreads, bei denen die Anwendung nicht ausgeführt wird, wenn alle Vordergrundthreads beendet wurden.The thread pool uses background threads, which do not keep the application running if all foreground threads have terminated. (Dies ist ein einfaches Beispiel für eine Racebedingung.)(This is a simple example of a race condition.)

Hinweise

Viele Anwendungen erstellen Threads, die sehr viel Zeit in den Ruhezustand investieren und auf das Eintreten eines Ereignisses warten.Many applications create threads that spend a great deal of time in the sleeping state, waiting for an event to occur. Andere Threads können nur dann in den Ruhezustand versetzt werden, wenn Sie regelmäßig aktiviert werden, um eine Änderung oder Update Statusinformationen abzurufen.Other threads might enter a sleeping state only to be awakened periodically to poll for a change or update status information. Der Thread Pool ermöglicht es Ihnen, Threads effizienter zu verwenden, indem Sie der Anwendung einen Pool von Arbeitsthreads bereitstellen, die vom System verwaltet werden.The thread pool enables you to use threads more efficiently by providing your application with a pool of worker threads that are managed by the system. Beispiele für Vorgänge, die Thread Pool-Threads verwenden, sind die folgenden:Examples of operations that use thread pool threads include the following:

  • Wenn Sie ein- Task oder Task<TResult> -Objekt zum asynchronen Ausführen einer Aufgabe erstellen, wird der Task standardmäßig für die Ausführung in einem Thread Pool Thread eingeplant.When you create a Task or Task<TResult> object to perform some task asynchronously, by default the task is scheduled to run on a thread pool thread.

  • Asynchrone Timer verwenden den Thread Pool.Asynchronous timers use the thread pool. Thread Pool-Threads führen Rückrufe aus System.Threading.Timer der-Klasse aus und rufen System.Timers.Timer Ereignisse aus der-Klasse auf.Thread pool threads execute callbacks from the System.Threading.Timer class and raise events from the System.Timers.Timer class.

  • Wenn Sie registrierte Wait-Handles verwenden, überwacht ein System Thread den Status der Wait-Handles.When you use registered wait handles, a system thread monitors the status of the wait handles. Wenn ein warte Vorgang abgeschlossen ist, führt ein Arbeits Thread aus dem Thread Pool die entsprechende Rückruffunktion aus.When a wait operation completes, a worker thread from the thread pool executes the corresponding callback function.

  • Beim Abrufen der QueueUserWorkItem -Methode, um eine Methode für die Ausführung in einem Thread Pool Thread in die Warteschlange zu stellen.When you call the QueueUserWorkItem method to queue a method for execution on a thread pool thread. Hierzu übergeben Sie die-Methode als WaitCallback Delegat.You do this by passing the method a WaitCallback delegate. Der Delegat hat die Signatur.The delegate has the signature

    void WaitCallback(Object state)  
    
    Sub WaitCallback(state As Object)  
    

    dabei state ist ein Objekt, das Daten enthält, die vom Delegaten verwendet werden sollen.where state is an object that contains data to be used by the delegate. Die tatsächlichen Daten können durch Aufrufen der QueueUserWorkItem(WaitCallback, Object) -Methode an den-Delegaten übermittelt werden.The actual data can be passed to the delegate by calling the QueueUserWorkItem(WaitCallback, Object) method.

Hinweis

Bei den Threads im verwalteten Thread Pool handelt es sich um Hintergrundthreads.The threads in the managed thread pool are background threads. Das heißt, IsBackground die Eigenschaften sind true.That is, their IsBackground properties are true. Dies bedeutet, dass ThreadPool ein Thread die Ausführung einer Anwendung nicht aufrecht erhält, nachdem alle Vordergrundthreads beendet wurden.This means that a ThreadPool thread will not keep an application running after all foreground threads have exited.

Wichtig

Wenn der Thread Pool einen Thread wieder verwendet, löscht er nicht die Daten im lokalen Thread Speicher oder in Feldern, die mit dem ThreadStaticAttribute -Attribut markiert sind.When the thread pool reuses a thread, it does not clear the data in thread local storage or in fields that are marked with the ThreadStaticAttribute attribute. Wenn eine Methode den lokalen Thread Speicher oder die mit dem ThreadStaticAttribute -Attribut markierten Felder überprüft, werden die gefundenen Werte möglicherweise von einer früheren Verwendung des Thread Pool Threads ausgelassen.Therefore, when a method examines thread local storage or fields that are marked with the ThreadStaticAttribute attribute, the values it finds might be left over from an earlier use of the thread pool thread.

Sie können auch Arbeitselemente in die Warteschlange stellen, die nicht mit einem warte Vorgang im Thread Pool verknüpft sind.You can also queue work items that are not related to a wait operation to the thread pool. Um anzufordern, dass ein Arbeits Element von einem Thread im Thread Pool behandelt werden soll, müssen QueueUserWorkItem Sie die-Methode aufzurufen.To request that a work item be handled by a thread in the thread pool, call the QueueUserWorkItem method. Diese Methode verwendet als Parameter einen Verweis auf die Methode oder den Delegaten, die von dem aus dem Thread Pool ausgewählten Thread aufgerufen wird.This method takes as a parameter a reference to the method or delegate that will be called by the thread selected from the thread pool. Es gibt keine Möglichkeit, ein Arbeits Element abzubrechen, nachdem es in die Warteschlange eingereiht wurde.There is no way to cancel a work item after it has been queued.

Timer-Queue-Timer und registrierte warte Vorgänge verwenden ebenfalls den Thread Pool.Timer-queue timers and registered wait operations also use the thread pool. Die Rückruf Funktionen werden in die Warteschlange des Thread Pools eingereiht.Their callback functions are queued to the thread pool.

Es gibt einen Thread Pool pro Prozess.There is one thread pool per process. Ab .NET Framework 4.NET Framework 4 ist die Standardgröße des Threadpools für einen Prozess von mehreren Faktoren abhängig, z. B. von der Größe des virtuellen Adressraums.Beginning with the .NET Framework 4.NET Framework 4, the default size of the thread pool for a process depends on several factors, such as the size of the virtual address space. Ein Prozess kann die GetMaxThreads-Methode aufrufen, um die Anzahl der Threads zu bestimmen.A process can call the GetMaxThreads method to determine the number of threads. Die Anzahl der Threads im Thread Pool kann mithilfe der SetMaxThreads -Methode geändert werden.The number of threads in the thread pool can be changed by using the SetMaxThreads method. Jeder Thread verwendet die Standard Stapelgröße und wird mit der Standardpriorität ausgeführt.Each thread uses the default stack size and runs at the default priority.

Hinweis

Nicht verwalteter Code, der den .NET Framework hostet, kann die Größe des Thread Pools mithilfe CorSetMaxThreads der in der Datei "mscoree. h" definierten Funktion ändern.Unmanaged code that hosts the .NET Framework can change the size of the thread pool by using the CorSetMaxThreads function, defined in the mscoree.h file.

Der Thread Pool stellt bei Bedarf neue Arbeitsthreads oder e/a-abschlusthreads bereit, bis die Mindestanzahl für jede Kategorie erreicht ist.The thread pool provides new worker threads or I/O completion threads on demand until it reaches the minimum for each category. Wenn ein Minimalwert erreicht wird, kann der Thread Pool zusätzliche Threads in dieser Kategorie erstellen oder warten, bis einige Tasks beendet wurden.When a minimum is reached, the thread pool can create additional threads in that category or wait until some tasks complete. Ab .NET Framework 4.NET Framework 4 erstellt und zerstört der Threadpool Arbeitsthreads, um den Durchsatz zu optimieren. Der Durchsatz ist als die Anzahl der Aufgaben definiert, die pro Zeiteinheit abgeschlossen werden.Beginning with the .NET Framework 4.NET Framework 4, the thread pool creates and destroys worker threads in order to optimize throughput, which is defined as the number of tasks that complete per unit of time. Bei zu wenigen Threads werden die verfügbaren Ressourcen möglicherweise nicht optimal genutzt, wohingegen bei zu vielen Threads Ressourcenkonflikte auftreten können.Too few threads might not make optimal use of available resources, whereas too many threads could increase resource contention.

Hinweis

Wenn die Anforderungen niedrig sind, kann die tatsächliche Anzahl der Threads im Threadpool unterhalb der Mindestwerte liegen.When demand is low, the actual number of thread pool threads can fall below the minimum values.

Sie können die GetMinThreads-Methode verwenden, um diese Mindestwerte abzurufen.You can use the GetMinThreads method to obtain these minimum values.

Achtung

Sie können die SetMinThreads -Methode verwenden, um die Mindestanzahl von Threads zu erhöhen.You can use the SetMinThreads method to increase the minimum number of threads. Allerdings kann ein unnötiges Erhöhen dieses Wertes zu Leistungsproblemen führen.However, unnecessarily increasing these values can cause performance problems. Wenn zu viele Aufgaben gleichzeitig gestartet werden, werden möglicherweise alle Aufgaben zu langsam ausgeführt.If too many tasks start at the same time, all of them might appear to be slow. In den meisten Fällen erreicht der Threadpool mit dem eigenen Algorithmus für die Zuordnung von Threads eine bessere Leistung.In most cases the thread pool will perform better with its own algorithm for allocating threads.

Eigenschaften

CompletedWorkItemCount CompletedWorkItemCount CompletedWorkItemCount CompletedWorkItemCount

Ruft die Anzahl der Arbeitselemente ab, die bisher verarbeitet wurden.Gets the number of work items that have been processed so far.

PendingWorkItemCount PendingWorkItemCount PendingWorkItemCount PendingWorkItemCount

Ruft die Anzahl von Arbeitselementen ab, die sich derzeit in der Verarbeitungswarteschlange befinden.Gets the number of work items that are currently queued to be processed.

ThreadCount ThreadCount ThreadCount ThreadCount

Ruft die Anzahl der derzeit vorhandenen Threads im Threadpool ab.Gets the number of thread pool threads that currently exist.

Methoden

BindHandle(IntPtr) BindHandle(IntPtr) BindHandle(IntPtr) BindHandle(IntPtr)

Bindet ein Betriebssystemhandle an den ThreadPool.Binds an operating system handle to the ThreadPool.

BindHandle(SafeHandle) BindHandle(SafeHandle) BindHandle(SafeHandle) BindHandle(SafeHandle)

Bindet ein Betriebssystemhandle an den ThreadPool.Binds an operating system handle to the ThreadPool.

GetAvailableThreads(Int32, Int32) GetAvailableThreads(Int32, Int32) GetAvailableThreads(Int32, Int32) GetAvailableThreads(Int32, Int32)

Ruft die Differenz zwischen der von der GetMaxThreads(Int32, Int32)-Methode zurückgegebenen maximalen Anzahl der Threads im Threadpool und der Anzahl der gerade aktiven Threads ab.Retrieves the difference between the maximum number of thread pool threads returned by the GetMaxThreads(Int32, Int32) method, and the number currently active.

GetMaxThreads(Int32, Int32) GetMaxThreads(Int32, Int32) GetMaxThreads(Int32, Int32) GetMaxThreads(Int32, Int32)

Ruft die Anzahl der Anforderungen für den Threadpool ab, die gleichzeitig aktiv sein können.Retrieves the number of requests to the thread pool that can be active concurrently. Alle über diese Zahl hinausgehenden Anforderungen bleiben in der Warteschlange, bis die Threads des Threadpools verfügbar sind.All requests above that number remain queued until thread pool threads become available.

GetMinThreads(Int32, Int32) GetMinThreads(Int32, Int32) GetMinThreads(Int32, Int32) GetMinThreads(Int32, Int32)

Ruft die Mindestanzahl von Threads ab, die der Threadpool bei Bedarf erstellt, wenn neue Anforderungen gestellt werden, bevor zu einem Algorithmus zum Verwalten von Threaderstellung und -löschung gewechselt wird.Retrieves the minimum number of threads the thread pool creates on demand, as new requests are made, before switching to an algorithm for managing thread creation and destruction.

QueueUserWorkItem(WaitCallback) QueueUserWorkItem(WaitCallback) QueueUserWorkItem(WaitCallback) QueueUserWorkItem(WaitCallback)

Fügt der Warteschlange eine auszuführende Methode hinzu.Queues a method for execution. Die Methode wird ausgeführt, wenn ein Thread des Threadpools verfügbar wird.The method executes when a thread pool thread becomes available.

QueueUserWorkItem(WaitCallback, Object) QueueUserWorkItem(WaitCallback, Object) QueueUserWorkItem(WaitCallback, Object) QueueUserWorkItem(WaitCallback, Object)

Fügt der Warteschlange eine auszuführende Methode hinzu und gibt ein Objekt an, das die von der Methode zu verwendenden Daten enthält.Queues a method for execution, and specifies an object containing data to be used by the method. Die Methode wird ausgeführt, wenn ein Thread des Threadpools verfügbar wird.The method executes when a thread pool thread becomes available.

QueueUserWorkItem<TState>(Action<TState>, TState, Boolean) QueueUserWorkItem<TState>(Action<TState>, TState, Boolean) QueueUserWorkItem<TState>(Action<TState>, TState, Boolean) QueueUserWorkItem<TState>(Action<TState>, TState, Boolean)

Fügt der Warteschlange eine Methode hinzu, die von einem Action<T>-Delegat zur Ausführung angegeben wird, und stellt die von der Methode zu verwendenden Daten bereit.Queues a method specified by an Action<T> delegate for execution, and provides data to be used by the method. Die Methode wird ausgeführt, wenn ein Thread des Threadpools verfügbar wird.The method executes when a thread pool thread becomes available.

RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 32-Bit-Ganzzahl ohne Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 32-bit unsigned integer for the time-out in milliseconds.

RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)

Registriert einen Delegaten, der auf ein WaitHandle wartet, und gibt einen TimeSpan-Wert für das Timeout an.Registers a delegate to wait for a WaitHandle, specifying a TimeSpan value for the time-out.

RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 32-Bit-Ganzzahl mit Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 32-bit signed integer for the time-out in milliseconds.

RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 64-Bit-Ganzzahl mit Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 64-bit signed integer for the time-out in milliseconds.

SetMaxThreads(Int32, Int32) SetMaxThreads(Int32, Int32) SetMaxThreads(Int32, Int32) SetMaxThreads(Int32, Int32)

Legt die Anzahl der Anforderungen für den Threadpool fest, die gleichzeitig aktiv sein können.Sets the number of requests to the thread pool that can be active concurrently. Alle über diese Zahl hinausgehenden Anforderungen bleiben in der Warteschlange, bis die Threads des Threadpools verfügbar sind.All requests above that number remain queued until thread pool threads become available.

SetMinThreads(Int32, Int32) SetMinThreads(Int32, Int32) SetMinThreads(Int32, Int32) SetMinThreads(Int32, Int32)

Legt die Mindestanzahl von Threads fest, die der Threadpool bei Bedarf erstellt, wenn neue Anforderungen gestellt werden, bevor zu einem Algorithmus zum Verwalten von Threaderstellung und -löschung gewechselt wird.Sets the minimum number of threads the thread pool creates on demand, as new requests are made, before switching to an algorithm for managing thread creation and destruction.

UnsafeQueueNativeOverlapped(NativeOverlapped*) UnsafeQueueNativeOverlapped(NativeOverlapped*) UnsafeQueueNativeOverlapped(NativeOverlapped*) UnsafeQueueNativeOverlapped(NativeOverlapped*)

Stellt einen überlappenden E/A-Vorgang zur Ausführung in die Warteschlange.Queues an overlapped I/O operation for execution.

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Fügt das angegebene Arbeitselementobjekt in die Warteschlange des Threadpools ein.Queues the specified work item object to the thread pool.

UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object)

Stellt den angegebenen Delegaten in eine Warteschlange für den Threadpool, leitet die Aufrufliste jedoch nicht an den Arbeitsthread weiter.Queues the specified delegate to the thread pool, but does not propagate the calling stack to the worker thread.

UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean)

Fügt der Warteschlange eine Methode hinzu, die von einem Action<T>-Delegat zur Ausführung angegeben wurde, und gibt ein Objekt an, das die von der Methode zu verwendenden Daten enthält.Queues a method specified by an Action<T> delegate for execution, and specifies an object containing data to be used by the method. Die Methode wird ausgeführt, wenn ein Thread des Threadpools verfügbar wird.The method executes when a thread pool thread becomes available.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)

Registriert einen Delegaten, der auf ein WaitHandle wartet, und gibt einen TimeSpan-Wert für das Timeout an. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.Registers a delegate to wait for a WaitHandle, specifying a TimeSpan value for the time-out. This method does not propagate the calling stack to the worker thread.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 32-Bit-Ganzzahl mit Vorzeichen verwendet wird.Registers a delegate to wait for a WaitHandle, using a 32-bit signed integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.This method does not propagate the calling stack to the worker thread.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 64-Bit-Ganzzahl mit Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 64-bit signed integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.This method does not propagate the calling stack to the worker thread.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 32-Bit-Ganzzahl ohne Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 32-bit unsigned integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.This method does not propagate the calling stack to the worker thread.

Gilt für:

Threadsicherheit

Dieser Typ ist threadsicher.This type is thread safe.

Siehe auch