Thread.IsThreadPoolThread Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient une valeur indiquant si un thread appartient au pool de threads managés ou non.
public:
property bool IsThreadPoolThread { bool get(); };
public bool IsThreadPoolThread { get; }
member this.IsThreadPoolThread : bool
Public ReadOnly Property IsThreadPoolThread As Boolean
Valeur de propriété
true
si ce thread appartient au pool de threads managés ; sinon, false
.
Exemples
L’exemple de code suivant montre comment déterminer si un thread provient du pool de threads.
using namespace System;
using namespace System::Threading;
ref class IsThreadPool
{
public:
static void ThreadMethod()
{
Console::WriteLine( "ThreadOne, executing ThreadMethod, "
"is {0}from the thread pool.", Thread::CurrentThread->IsThreadPoolThread ? (String^)"" : "not " );
}
static void WorkMethod( Object^ stateInfo )
{
Console::WriteLine( "ThreadTwo, executing WorkMethod, "
"is {0}from the thread pool.", Thread::CurrentThread->IsThreadPoolThread ? (String^)"" : "not " );
// Signal that this thread is finished.
dynamic_cast<AutoResetEvent^>(stateInfo)->Set();
}
};
int main()
{
AutoResetEvent^ autoEvent = gcnew AutoResetEvent( false );
Thread^ regularThread = gcnew Thread( gcnew ThreadStart( &IsThreadPool::ThreadMethod ) );
regularThread->Start();
ThreadPool::QueueUserWorkItem( gcnew WaitCallback( &IsThreadPool::WorkMethod ), autoEvent );
// Wait for foreground thread to end.
regularThread->Join();
// Wait for background thread to end.
autoEvent->WaitOne();
}
using System;
using System.Threading;
class IsThreadPool
{
static void Main()
{
AutoResetEvent autoEvent = new AutoResetEvent(false);
Thread regularThread =
new Thread(new ThreadStart(ThreadMethod));
regularThread.Start();
ThreadPool.QueueUserWorkItem(new WaitCallback(WorkMethod),
autoEvent);
// Wait for foreground thread to end.
regularThread.Join();
// Wait for background thread to end.
autoEvent.WaitOne();
}
static void ThreadMethod()
{
Console.WriteLine("ThreadOne, executing ThreadMethod, " +
"is {0}from the thread pool.",
Thread.CurrentThread.IsThreadPoolThread ? "" : "not ");
}
static void WorkMethod(object stateInfo)
{
Console.WriteLine("ThreadTwo, executing WorkMethod, " +
"is {0}from the thread pool.",
Thread.CurrentThread.IsThreadPoolThread ? "" : "not ");
// Signal that this thread is finished.
((AutoResetEvent)stateInfo).Set();
}
}
Option Explicit
Option Strict
Imports System.Threading
Public Class IsThreadPool
<MTAThread> _
Shared Sub Main()
Dim autoEvent As New AutoResetEvent(False)
Dim regularThread As New Thread(AddressOf ThreadMethod)
regularThread.Start()
ThreadPool.QueueUserWorkItem(AddressOf WorkMethod, autoEvent)
' Wait for foreground thread to end.
regularThread.Join()
' Wait for background thread to end.
autoEvent.WaitOne()
End Sub
Shared Sub ThreadMethod()
Console.WriteLine("ThreadOne, executing ThreadMethod, " & _
"is from the thread pool? {0}", _
Thread.CurrentThread.IsThreadPoolThread)
End Sub
Shared Sub WorkMethod(stateInfo As Object)
Console.WriteLine("ThreadTwo, executing WorkMethod, " & _
"is from the thread pool? {0}", _
Thread.CurrentThread.IsThreadPoolThread)
' Signal that this thread is finished.
DirectCast(stateInfo, AutoResetEvent).Set()
End Sub
End Class
Remarques
Pour plus d’informations, consultez pool de threads managés.