C# में किसी थ्रेड की वर्तमान स्थिति जांचने के लिए, हम ThreadState प्रॉपर्टी का उपयोग करते हैं। यह प्रॉपर्टी ThreadState एन्यूमरेशन का मान लौटाती है जो थ्रेड की स्थिति दर्शाता है (जैसे Unstarted, Running, WaitSleepJoin, Stopped, आदि)। Thread क्लास System.Threading नेमस्पेस में स्थित है।
उदाहरण 1: अनारंभित थ्रेड और थ्रेड पूल की स्थिति
using System;
using System.Threading;
public class Demo
{
public static void Main()
{
Thread thread = new Thread(new ThreadStart(Demo1));
ThreadPool.QueueUserWorkItem(new WaitCallback(Demo2));
Console.WriteLine("थ्रेड की वर्तमान स्थिति = " + thread.ThreadState);
Console.WriteLine("ManagedThreadId = " + thread.ManagedThreadId);
}
public static void Demo1()
{
Thread.Sleep(2000);
}
public static void Demo2(object stateInfo)
{
Console.WriteLine("क्या थ्रेड मैनेज्ड थ्रेड पूल से संबंधित है? = " + Thread.CurrentThread.IsThreadPoolThread);
}
}
आउटपुट
थ्रेड की वर्तमान स्थिति = Unstarted ManagedThreadId = 3
उदाहरण 2: थ्रेड प्रारंभ करने से पहले और बाद की स्थिति
using System;
using System.Threading;
public class Demo
{
public static void Main()
{
Thread thread = new Thread(new ThreadStart(Demo));
Console.WriteLine("ManagedThreadId = " + thread.ManagedThreadId);
Console.WriteLine("थ्रेड की वर्तमान स्थिति = " + thread.ThreadState);
thread.Start();
Console.WriteLine("थ्रेड की वर्तमान स्थिति = " + thread.ThreadState);
}
public static void Demo()
{
Console.WriteLine("क्या थ्रेड मैनेज्ड थ्रेड पूल से संबंधित है? = " + Thread.CurrentThread.IsThreadPoolThread);
}
}
आउटपुट
ManagedThreadId = 3 थ्रेड की वर्तमान स्थिति = Unstarted क्या थ्रेड मैनेज्ड थ्रेड पूल से संबंधित है? = False थ्रेड की वर्तमान स्थिति = Running
मुख्य बिंदु:
ThreadStateएक फ्लैग एन्यूमरेशन है - एकाधिक मान संयुक्त हो सकते हैं (बिटवाइज़ OR)- सामान्य स्थितियाँ:
Unstarted,Running,WaitSleepJoin,Suspended,Stopped Start()कॉल करने से पहले स्थितिUnstartedहोती हैStart()के बाद स्थितिRunningहो जाती हैManagedThreadIdप्रत्येक थ्रेड के लिए अद्वितीय पहचानकर्ता होता हैIsThreadPoolThreadदर्शाता है कि थ्रेड थ्रेड पूल से संबंधित है या नहीं