বিভিন্ন থ্রেডের মধ্যে ডেটা ভাগ করার সহজ পদ্ধতিটি shared data
নিম্নরূপ (কয়েকটি সিউডো কোড):
class MyThread
{
public string SharedData;
public void Worker()
{
...lengthy action, infinite loop, etc...
SharedData = "whatever";
...lengthy action...
return;
}
}
class Program
{
static void Main()
{
MyThread m = new MyThread();
Thread WorkerThread = new Thread(m.Worker);
WorkerThread.Start();
loop//or e.g. a Timer thread
{
f(m.SharedData);
}
return;
}
}
মাল্টিথ্রেডিং সম্পর্কে এই দুর্দান্ত পরিচিতিতে আপনি এই পদ্ধতিটি পড়তে পারেন তবে, আমি এই বিষয়ে পড়তে পছন্দ করিO'Reilly book C# 3.0 in a nutshell
বইয়ের নতুন সংস্করণটির মতো গুগল বইগুলিতেও অবাধে অ্যাক্সেসযোগ্য ভাই আলবাহারী (2007) দ্বারা এটি , কারণ এতে থ্রেড পুলিং, ফোরগ্রাউন্ড বনাম ব্যাকগ্রাউন্ড থ্রেড, ইত্যাদি ইত্যাদি সুন্দর এবং সাধারণ উদাহরণ কোড সহ অন্তর্ভুক্ত রয়েছে। (অস্বীকৃতি: আমি এই বইয়ের একটি জীর্ণ অনুলিপিটির মালিক)
আপনি যদি উইনফর্মস অ্যাপ্লিকেশনটি তৈরি করছেন তবে ভাগ করা ডেটা ব্যবহার বিশেষত সহজ, কারণ উইনফর্ম নিয়ন্ত্রণগুলি থ্রেড-নিরাপদ নয়। উইনফর্ম নিয়ন্ত্রণে কর্মী থ্রেড থেকে ডেটা পাস করার জন্য একটি কলব্যাক ব্যবহার করে মূল ইউআই থ্রেডকে Invoke()
সেই নিয়ন্ত্রণের থ্রেড-নিরাপদ করতে কুরুচিপূর্ণ কোড দরকার । পরিবর্তে ভাগ করা ডেটা এবং একক থ্রেডযুক্ত 0.2 সেকেন্ডের System.Windows.Forms.Timer
সংক্ষিপ্তসার Interval
ব্যবহার করে আপনি সহজেই কর্মী থ্রেড থেকে নিয়ন্ত্রণ ছাড়াই তথ্য প্রেরণ করতে পারবেন Invoke
।