উত্তর:
STAThreadAttribute
মূলত এর COM উপাদান সঙ্গে যোগাযোগ করার জন্য উইন্ডোজ বার্তা পাম্প জন্য প্রয়োজন। যদিও মূল উইন্ডোজ ফর্মগুলি সিওএম ব্যবহার করে না, তবে সিস্টেমের ডায়ালগগুলির মতো ওএসের অনেকগুলি উপাদান এই প্রযুক্তি ব্যবহার করে।
এমএসডিএন কারণটিকে আরও কিছুটা বিশদে ব্যাখ্যা করেছে:
STAThreadAttribute নির্দেশ করে যে অ্যাপ্লিকেশনটির জন্য COM থ্রেডিং মডেলটি একক থ্রেডযুক্ত অ্যাপার্টমেন্ট। এই বৈশিষ্ট্যটি অবশ্যই উইন্ডোজ ফর্ম ব্যবহার করে এমন কোনও অ্যাপ্লিকেশনের প্রবেশের পয়েন্টে উপস্থিত থাকতে হবে; যদি এটি বাদ দেওয়া হয় তবে উইন্ডোজ উপাদানগুলি সঠিকভাবে কাজ করতে পারে না। বৈশিষ্ট্যটি উপস্থিত না থাকলে, অ্যাপ্লিকেশনটি মাল্টিথ্রেডেড অ্যাপার্টমেন্ট মডেল ব্যবহার করে, যা উইন্ডোজ ফর্মগুলির জন্য সমর্থিত নয়।
এই ব্লগ পোস্ট ( কেন স্ট্যাথ্রেড প্রয়োজন? ) এছাড়াও প্রয়োজনীয়তাটি বেশ ভালভাবে ব্যাখ্যা করে। থ্রেডিং মডেল কীভাবে সিএলআর স্তরে কাজ করে সে সম্পর্কে যদি আপনি আরও গভীরতর দৃষ্টিভঙ্গি চান তবে জুন 2004 (এমক্রিভড, এপ্রিল ২০০৯) থেকে এই এমএসডিএন ম্যাগাজিনের নিবন্ধটি দেখুন see
এটি সংকলকটিকে বলে যে আপনি একক থ্রেড অ্যাপার্টমেন্ট মডেলটিতে আছেন। এটি একটি দুষ্ট COM জিনিস, এটি সাধারণত উইন্ডোজ ফর্মগুলির জন্য ব্যবহার করা হয় (জিইআইআই এর) যে এটি ড্রইংয়ের জন্য উইন 32 ব্যবহার করে, যা এসটিএ হিসাবে প্রয়োগ করা হয়। আপনি যদি একাধিক থ্রেড থেকে স্টা মডেল এমন কিছু ব্যবহার করেন তবে আপনি দূষিত বস্তু পেয়ে যাবেন।
এজন্য আপনাকে গুইকে অন্য থ্রেড থেকে প্রার্থনা করতে হবে (যদি আপনি কোনও ফর্ম কোডিং করে থাকেন)।
মূলত এটি সম্পর্কে চিন্তা করবেন না, কেবল এটি গ্রহণ করুন যে উইন্ডোজ জিইউআই থ্রেডগুলি অবশ্যই এসটিএ হিসাবে চিহ্নিত করা উচিত অন্যথায় অদ্ভুত জিনিসগুলি ঘটে।
এসএটিথ্রেডএট্রিবিউট সিওএম প্রয়োজন হলে সিঙ্গল-থ্রেডড সিওএম অ্যাপার্টমেন্ট ব্যবহার করতে একটি থ্রেড চিহ্নিত করে। ডিফল্টরূপে .NET মোটেও COM আরম্ভ করবে না। এটি কেবল তখনই যখন সিওএম প্রয়োজন হয়, যেমন কোনও সিওএম অবজেক্ট বা সিওএম কন্ট্রোল তৈরি করা হয় বা যখন টানা 'এন' ড্রপ প্রয়োজন হয় তখন সেই সিওএমটি আরম্ভ হয়। যখন এটি হয়, .NET অন্তর্নিহিত CoInitializeEx ফাংশন কল করে, এটি একটি পতাকা বহন করে যা একটি থ্রেডকে একাধিক-থ্রেডযুক্ত বা একক থ্রেডযুক্ত অ্যাপার্টমেন্টে যুক্ত করতে হবে তা নির্দেশ করে।
এখানে আরও তথ্য পড়ুন (সংরক্ষণাগার, জুন ২০০৯)
এবং
[STAThread]
?