কম্পিউটার টিউটোরিয়াল

C#-এ বর্তমান থ্রেডের কনটেক্সট আইডি বের করা

প্রতিটি থ্রেড একটি এক্সিকিউশন কনটেক্সটে চলে যা সিকিউরিটি, কলচার, এবং অন্যান্য প্রসেস-వাইড সেটিং ধারণ করে। Thread.CurrentContext.ContextID প্রপার্টি বর্তমান কনটেক্সটের ইউনিক আইডেন্টিফায়ার রিটার্ন করে।

বেসিক উদাহরণ


using System;
using System.Threading;

namespace Demo
{
    class MyClass
    {
        static void Main(string[] args)
        {
            Thread thread = Thread.CurrentThread;
            thread.Name = "My new Thread";
            
            Console.WriteLine($"থ্রেড নাম: {thread.Name}");
            Console.WriteLine($"কারেন্ট কনটেক্সট আইডি: {Thread.CurrentContext.ContextID}");
            Console.WriteLine($"ম্যানেজড থ্রেড আইডি: {Thread.CurrentThread.ManagedThreadId}");
            Console.WriteLine($"থ্রেড স্টেট: {Thread.CurrentThread.ThreadState}");
            Console.WriteLine($"ইজ ব্যাকগ্রাউন্ড: {Thread.CurrentThread.IsBackground}");
            Console.WriteLine($"প্রায়োরিটি: {Thread.CurrentThread.Priority}");
            
            Console.ReadKey();
        }
    }
}

আউটপুট


থ্রেড নাম: My new Thread
কারেন্ট কনটেক্সট আইডি: 0
ম্যানেজড থ্রেড আইডি: 1
থ্রেড স্টেট: Running
ইজ ব্যাকগ্রাউন্ড: False
প্রায়োরিটি: Normal

কনটেক্সট আইডি সম্পর্কে জানা দরকার

  • ContextID 0: ডিফল্ট কনটেক্সট (বেশিরভাগ সিম্পল অ্যাপ্লিকেশনে)
  • কনটেক্সট বদলে: Thread.SetApartmentState, COM ইন্টারঅপ, রিমোটিং, বা SynchronizationAttribute ব্যবহার সময়
  • ManagedThreadId vs ContextID: ManagedThreadId থ্রেডের ইউনিক আইডি, ContextID এক্সিকিউশন এনভায়রনমেন্টের আইডি

নতুন থ্রেডে কনটেক্সট দেখানো


using System;
using System.Threading;

public class ThreadContextDemo
{
    public static void Main()
    {
        Console.WriteLine($"মেইন থ্রেড - ContextID: {Thread.CurrentContext.ContextID}, ManagedThreadId: {Thread.CurrentThread.ManagedThreadId}");
        
        Thread newThread = new Thread(() => 
        {
            Console.WriteLine($"নতুন থ্রেড - ContextID: {Thread.CurrentContext.ContextID}, ManagedThreadId: {Thread.CurrentThread.ManagedThreadId}");
        });
        
        newThread.Start();
        newThread.Join();
        
        // থ্রেড পুল থ্রেড
        ThreadPool.QueueUserWorkItem(_ => 
        {
            Console.WriteLine($"থ্রেড পুল - ContextID: {Thread.CurrentContext.ContextID}, ManagedThreadId: {Thread.CurrentThread.ManagedThreadId}");
        });
        
        Thread.Sleep(100); // পুল থ্রেড chạy হওয়ার জন্য অপেক্ষা
    }
}

আউটপুট উদাহরণ


মেইন থ্রেড - ContextID: 0, ManagedThreadId: 1
নতুন থ্রেড - ContextID: 0, ManagedThreadId: 3
থ্রেড পুল - ContextID: 0, ManagedThreadId: 4

কনটেক্সট ফ্লো (ExecutionContext)

.NET-এ ExecutionContext (সিকিউরিটি, কলচার, AsyncLocal ইত্যাদি) থ্রেড জুড়ে ফ্লো করে।


using System;
using System.Threading;

var local = new AsyncLocal<string>();
local.Value = "Main";

ThreadPool.QueueUserWorkItem(_ => 
{
    Console.WriteLine($"থ্রেড পুলে AsyncLocal: {local.Value}"); // "Main" পাবে
    local.Value = "Pool";
});

Thread.Sleep(50);
Console.WriteLine($"মেইনে AsyncLocal: {local.Value}"); // "Main" (আইসোলেটেড)

সারসংক্ষেপ

  • Thread.CurrentContext.ContextID - বর্তমান কনটেক্সট আইডি (সাধারণত ০)
  • Thread.CurrentThread.ManagedThreadId - থ্রেডের ইউনিক আইডি (অনন্য)
  • সাধারণ অ্যাপ্লিকেশনে কনটেক্সট আইডি সরাসরি ব্যবহার করা হয় না
  • এডভান্সড সিনারিও: COM+, রিমোটিং, কাস্টম সিঙ্ক্রোনাইজেশন কনটেক্সট
  1. নেটওয়ার্ক প্রিন্টার এর IP অ্যাড্রেস খুঁজে বের করার উপায়

  2. অ্যান্ড্রয়েডে বর্তমান থ্রেডের আইডি (ID) পাওয়ার পদ্ধতি

  3. C ড্রাইভের করেন্ট ভলিউম লেবেল লিখুন: লেবেল কীভাবে খুঁজবেন

  4. আপনার উইন্ডোজ ১১ PC-এর IP অ্যাড্রেস খুঁজে বের করুন: ধাপে ধাপে গাইড