PDA

View Full Version : سوال: راه حلی برای یک نیمچه ارور current thread is not in a single-threaded apartment...



ostovarit
جمعه 14 آبان 1389, 02:01 صبح
با سلام و خسته نباشید
با اروری مواجه شدم که راهی برای حلش پیدا نکردم ...
با اینکه لینک های زیادی تو گوگل بود ولی به نتیجه نرسیدم ...
ازTimer ، Background workerو... استفاده کردم

من از فرم اصلیم که کنترلی درش قرار داره یک نمونه ساختم و از اون به کنترل دسترسی پیدا کردم اروری در زمان اجرای فرم نیست در هین کار ارور زیر رو میده که اگر دوباره F5 رو بزنم و Run کنم ادامه کار بدون مشکل انجام میشه ... :



ActiveX control cannot be instantiated because the current thread is not in a single-threaded apartment.
ظاهرا خیلیا در دنیا به این مشکل تخیلی بر خوردند و راهکار های تخیلی هم برای حلش استفاده کردن که هیچ کدوم به کار من نیومد ... اگر میدونید مشکل از کجاست و راه حلش چیه ممنون میشم راهنمایی کنید.

با تشکر

ostovarit
جمعه 14 آبان 1389, 02:11 صبح
تو این ادرس یک بابایی مشکلی مشابه مشکل منو داشته :
http://www.ureader.com/msg/14444328.aspx
که در جوابش گفتن باید :
It means exactly what it says - you're not running in an STA. If you
put the [STAThread] attribute on your Main method, you should be fine.
من کلاس Program.cs رو چک کردم دقیقا همین [STAThread] که نمیدونم چیچی هست بالا سرش نوشته شده بود ...و باز ارور پا بر جاست.

ostovarit
شنبه 15 آبان 1389, 13:24 عصر
مشکل حل شد ... ولی خوب دلیل رو هنوز نفهمیدم ...

کل کد فرم دومم رو چک کردم تو بک گراند ورکر تابعی بود که به فرم اصلی اشاره میکرد و کنترلی که در فرم اصلی بود مورد بررسی و استفاده قرار گرفته بود ... به همین دلیل موقع استفاده کنترل ارور میداد چرا؟ نمیدونم ... تابع رو به بیرون بک گراند ورکر بردم و مشکل حل شد.

tooraj_azizi_1035
شنبه 15 آبان 1389, 13:39 عصر
سلام،
STA مخفف Singlethreaded Apartment هست و مربوط به تکنولوژی COM مایکروسافت میشه. علت بروز این خطا هم این هست که اکثر توابع Background Worker در وضعیت Multithreaded Apartment کار می کنند در حالی که برنامه شما از نوع Singlethreaded Apartment هست.:عصبانی:
توضیحات بیشتر: http://msdn.microsoft.com/en-us/library/ms693344(v=VS.85).aspx

:خجالت: .Ideas are everything, Microsoft Corporation