Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Thread.IsThreadPoolThread Property

Definition

Namespace:
System.Threading
Assemblies:
netstandard.dll, System.Threading.Thread.dll
Assembly:
System.Threading.Thread.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Thread.CoreCLR.cs
Source:
Thread.CoreCLR.cs
Source:
Thread.CoreCLR.cs
Source:
Thread.CoreCLR.cs
Source:
Thread.CoreCLR.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Gets a value indicating whether or not a thread belongs to the managed thread pool.

public:
 property bool IsThreadPoolThread { bool get(); };
public bool IsThreadPoolThread { get; }
member this.IsThreadPoolThread : bool
Public ReadOnly Property IsThreadPoolThread As Boolean

Property Value

true if this thread belongs to the managed thread pool; otherwise, false.

Examples

The following code example shows how to determine whether a thread is from the thread pool.

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();
 }
}
open System.Threading

let threadMethod () =
 printfn
 $"""ThreadOne, executing ThreadMethod, is {if Thread.CurrentThread.IsThreadPoolThread then
 ""
 else
 "not "}from the thread pool."""

let workMethod stateInfo =
 printfn
 $"""ThreadTwo, executing WorkMethod, is {if Thread.CurrentThread.IsThreadPoolThread then
 ""
 else
 "not "}from the thread pool."""

 // Signal that this thread is finished.
 (unbox<AutoResetEvent> stateInfo).Set() |> ignore

let autoEvent = new AutoResetEvent false

let regularThread = Thread threadMethod
regularThread.Start()
ThreadPool.QueueUserWorkItem(workMethod, autoEvent) |> ignore

// Wait for foreground thread to end.
regularThread.Join()

// Wait for background thread to end.
autoEvent.WaitOne() |> ignore
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

Remarks

For more information see The managed thread pool.

Applies to

See also


Feedback

Was this page helpful?