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

C# में थ्रेड को पैरामीटर पास करना

C# में थ्रेड को पैरामीटर पास करने के लिए ParameterizedThreadStart डेलीगेट का उपयोग किया जाता है, जो object पैरामीटर स्वीकार करता है।

चरण

  1. using System.Threading; नेमस्पेस शामिल करें।
  2. object पैरामीटर स्वीकार करने वाला मेथड बनाएं।
  3. ParameterizedThreadStart डेलीगेट के साथ थ्रेड बनाएं।
  4. Start(object) मेथड कॉल करके पैरामीटर पास करें।

उदाहरण

using System;
using System.Threading;

namespace Sample {
    class Demo {
        static void Main(string[] args) {
            String str = "Hello World!";

            // नया थ्रेड बनाएं
            Thread thread = new Thread(threadDemo);

            // पैरामीटर पास करें
            thread.Start(str);
        }

        static void threadDemo(object str) {
            Console.WriteLine("Value passed to the thread: " + str);
        }
    }
}

आउटपुट

Value passed to the thread: Hello World!

एकाधिक पैरामीटर्स पास करना

चूंकि Start केवल एक object स्वीकार करता है, एकाधिक मानों के लिए:

तरीका 1: Tuple का उपयोग

thread.Start(Tuple.Create("Hello", 123, true));

static void threadDemo(object param) {
    var data = (Tuple)param;
    Console.WriteLine($"{data.Item1}, {data.Item2}, {data.Item3}");
}

तरीका 2: कस्टम क्लास/स्ट्रक्ट

class ThreadData {
    public string Message { get; set; }
    public int Count { get; set; }
}

thread.Start(new ThreadData { Message = "Hello", Count = 5 });

तरीका 3: Lambda एक्सप्रेशन (आधुनिक, अनुशंसित)

string msg = "Hello";
int count = 5;

Thread thread = new Thread(() => {
    Console.WriteLine($"{msg} - {count}");
});
thread.Start();

मुख्य बिंदु

  • पैरामीटर object के रूप में पास होता है, कास्टिंग आवश्यक है।
  • लैम्ब्डा एक्सप्रेशन्स क्लोजर के माध्यम से वेरिएबल्स कैप्चर कर सकते हैं (अधिक टाइप-सेफ)।
  • साझा डेटा एक्सेस के लिए थ्रेड सेफ्टी (लॉक, Concurrent कलेक्शन्स) पर विचार करें।
  1. - C# में वर्तमान थ्रेड का नाम प्रदर्शित करना

    C# में Thread.Name प्रॉपर्टी का उपयोग करके थ्रेड को एक पहचान नाम दिया जा सकता है, जो डीबगिंग और लॉगिंग में बहुत उपयोगी होता है। उदाहरण using System; using System.Threading; namespace Demo { class MyClass { static void Main(string[] args) { Thread thread = Thread.CurrentThre

  1. - C# में कैरेक्टर केस बदलना (ToUpper/ToLower)

    C# में String.ToUpper() और String.ToLower() मेथड्स का उपयोग करके स्ट्रिंग के कैरेक्टर्स का केस बदला जा सकता है। स्ट्रिंग्स अपरिवर्तनीय (immutable) होती हैं, इसलिए ये मेथड्स नई स्ट्रिंग लौटाते हैं। उदाहरण using System; using System.Collections.Generic; using System.Text; namespace Demo { class

  1. - C# प्रोग्राम: वर्तमान थ्रेड की स्थिति जांचें

    C# में वर्तमान थ्रेड की स्थिति जांचने के लिए IsAlive प्रॉपर्टी का उपयोग करें।सबसे पहले, थ्रेड के बारे में जानकारी प्रदर्शित करने के लिए currentThread प्रॉपर्टी का उपयोग करें:Thread thread = Thread.CurrentThread;अब थ्रेड की स्थिति जांचने के लिए thread.IsAlive प्रॉपर्टी का उपयोग करें:thread.IsAliveउदा