Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में Thread क्लास के मेथड्स और प्रॉपर्टीज

C# में Thread क्लास: मेथड्स और प्रॉपर्टीज

System.Threading.Thread क्लास मैनेज्ड थ्रेड्स को नियंत्रित करती है। थ्रेड्स हल्के वजन के एक्सीक्यूशन पाथ्स हैं।

मुख्य प्रॉपर्टीज

प्रॉपर्टीविवरण
CurrentThreadवर्तमान में चल रहे थ्रेड को प्राप्त करता है (स्टैटिक)।
CurrentContextवर्तमान कॉन्टेक्स्ट प्राप्त करता है जहां थ्रेड चल रहा है।
CurrentCultureवर्तमान थ्रेड की कल्चर (फॉर्मेटिंग, तुलना) सेट/गेट करता है।
CurrentUICultureरिसोर्स मैनेजर के लिए UI कल्चर सेट/गेट करता है।
CurrentPrincipalरोल-बेस्ड सिक्योरिटी के लिए वर्तमान प्रिंसिपल सेट/गेट करता है।
ExecutionContextथ्रेड के विभिन्न कॉन्टेक्स्ट्स की जानकारी रखता है।
IsAliveथ्रेड निष्पादित हो रहा है? (बूलियन)
IsBackgroundबैकग्राउंड थ्रेड है? (ऐप एग्जिट को ब्लॉक नहीं करता)
ManagedThreadIdथ्रेड का यूनिक आइडेंटिफायर (इंट)।
Nameथ्रेड का नाम (डीबगिंग के लिए)।
Priorityथ्रेड प्रायोरिटी (Lowest..Highest)।
ThreadStateथ्रेड की वर्तमान स्थिति (Running, WaitSleepJoin, Stopped, आदि)।

मुख्य मेथड्स

मेथडविवरण
Start()थ्रेड शुरू करता है (कंस्ट्रक्टर में दिए डेलीगेट को चलाता है)।
Sleep(ms)वर्तमान थ्रेड को निर्दिष्ट मिलीसेकंड्स के लिए सस्पेंड करता है (स्टैटिक)।
Join()कॉलिंग थ्रेड को ब्लॉक करता है जब तक यह थ्रेड समाप्त न हो जाए।
Abort()अप्रचलित: ThreadAbortException थ्रो करके थ्रेड समाप्त करता है। उपयोग न करें।
Interrupt()WaitSleepJoin स्थिति में थ्रेड को इंटरप्ट करता है (ThreadInterruptedException)।
Yield()दूसरे थ्रेड को चलने का मौका देता है (स्टैटिक)।
GetData/SetDataथ्रेड-लोकल डेटा स्लॉट्स (LocalDataStoreSlot)।
BeginCriticalRegion/EndCriticalRegionहोस्ट को सूचित करता है कि क्रिटिकल कोड क्षेत्र में प्रवेश/निकास हो रहा है।
BeginThreadAffinity/EndThreadAffinityहोस्ट को सूचित करता है कि कोड फिजिकल थ्रेड पहचान पर निर्भर करता है।
AllocateDataSlot()सभी थ्रेड्स पर अनाम डेटा स्लॉट आवंटित करता है (स्टैटिक)।
AllocateNamedDataSlot(name)नामित डेटा स्लॉट आवंटित करता है (स्टैटिक)।

उदाहरण: थ्रेड प्रॉपर्टीज और मेथड्स

using System;
using System.Threading;

class Program {
    static void Main() {
        Thread t = Thread.CurrentThread;
        t.Name = "MainThread";
        
        Console.WriteLine($"Thread ID: {t.ManagedThreadId}");
        Console.WriteLine($"Name: {t.Name}");
        Console.WriteLine($"Priority: {t.Priority}");
        Console.WriteLine($"IsBackground: {t.IsBackground}");
        Console.WriteLine($"IsAlive: {t.IsAlive}");
        Console.WriteLine($"Culture: {t.CurrentCulture.Name}");
        
        // नया थ्रेड बनाएं
        Thread worker = new Thread(Work);
        worker.Name = "Worker";
        worker.IsBackground = true; // ऐप एग्जिट को ब्लॉक नहीं करेगा
        worker.Start();
        
        worker.Join(); // वेट करें
        Console.WriteLine("Worker finished");
    }
    
    static void Work() {
        Console.WriteLine($"Working on {Thread.CurrentThread.Name}");
        Thread.Sleep(1000);
    }
}

आउटपुट

Thread ID: 1
Name: MainThread
Priority: Normal
IsBackground: False
IsAlive: True
Culture: en-US
Working on Worker
Worker finished

आधुनिक विकल्प

नए कोड के लिए Task, async/await, Parallel, ThreadPool प्रीफर करें। Thread लो-लेवल कंट्रोल के लिए है।

  1. - C# में क्लास के मेंबर वेरिएबल्स क्या हैं?

    क्लास एक ब्लूप्रिंट है जिसमें C# में मेंबर वेरिएबल्स और फंक्शन्स होते हैं। यह ऑब्जेक्ट के व्यवहार का वर्णन करता है।मेंबर वेरिएबल्स क्या हैं, यह जानने के लिए क्लास का सिंटैक्स देखें:<एक्सेस स्पेसिफायर> class class_name {    // मेंबर वेरिएबल्स    <एक्सेस स्पेसिफायर> <

  1. - जावा 9 में Optional क्लास में कौन से नए मेथड जोड़े गए हैं?

    एक Optional क्लास एक कंटेनर प्रदान करता है जिसमें नॉन-नल मान हो भी सकता है और नहीं भी। यह Optional क्लास जावा 8 में पेश की गई थी ताकि कोड में उन स्थानों की संख्या कम की जा सके जहां NullPointerException उत्पन्न हो सकता है। जावा 9 ने Optional क्लास में तीन नए मेथड जोड़े: or(), ifPresentOrElse() और str

  1. - Java में क्लास/स्टैटिक मेथड्स क्या हैं?

    क्लास/स्टैटिक मेथड्स वे मेथड्स हैं जिन्हें क्लास पर ही कॉल किया जाता है, किसी विशेष ऑब्जेक्ट इंस्टेंस पर नहीं। स्टैटिक मॉडिफायर यह सुनिश्चित करता है कि इम्प्लीमेंटेशन सभी क्लास इंस्टेंस में समान है। क्लास/स्टैटिक मेथड्स को इंस्टेंटिएशन के बिना कॉल किया जाता है, जिसका अर्थ है कि स्टैटिक मेथड्स केवल क