PDA

View Full Version : درباره [STATHREAD]



senator_aka
چهارشنبه 03 مرداد 1386, 23:30 عصر
سلام دوستان.
من یه برنامه دارم که در قسمت کد آن بعد از 30 تا 40 خط کد، عبارت زیر آمده است؛که من معنی آن و علت استفاده از آن را نمی دانم اگه کسی میتونه لطفا راهنمایی کنه ؟؟





[STAThread]
static void Main( )
{
Application.Run( new ChessGame() );
}




من این کد را قبلا در کدهای مربوط به program دیده بودم اما در کد های مربوط به یک فرم تا حالا ندیده بودم.لازم به ذکر هست که من زیاد #C بلد نیستم.لطفا واضح توضیح دهید.
از لطف همگی شما ممنون

senator_aka
پنج شنبه 04 مرداد 1386, 14:48 عصر
یعنی کسی بلد نیست و نمی تونه کمک کنه.
باور کنید که نیاز ضروری به دانستن این مطلب دارم.

Alireza_Salehi
پنج شنبه 04 مرداد 1386, 16:33 عصر
اول این رو بخونید :
Single-Threaded Apartments (http://msdn2.microsoft.com/en-us/library/ms680112.aspx)

این [STAThread] خط باعث میشه برنامه Single-Threaded Apartments باشه!
البته این کد در صورتی اثر داره که از COM استفاده کرده باشید و گرنه این خط اثری در برنامه ندارد.

بقیش هم که تابع Main یا نقطه شروع برنامه است که با نمونه سازی از یک فرم برنامه رو اجرا میکنه!

اطلاعات بیشتر:
MTAThreadAttribute (http://msdn2.microsoft.com/en-us/library/system.mtathreadattribute.aspx)
STAThreadAttribute (http://msdn2.microsoft.com/en-us/library/system.stathreadattribute(VS.80).aspx)
Single-Threaded and Multithreaded Communication (http://msdn2.microsoft.com/en-us/library/ms688564.aspx)
Processes, Threads, and Apartments (http://msdn2.microsoft.com/en-us/library/ms693344.aspx)
Multithreaded Apartments (http://msdn2.microsoft.com/en-us/library/ms693421.aspx)

PC2st
پنج شنبه 04 مرداد 1386, 16:46 عصر
علاوه بر توضیحات arsp_2004

هر Thread میتونه دو نوع موقعیت آپارتمانی داشته باشه:

Single-Threaded Apartment (آپارتمان تک ریسمانی) - STA
Multithreaded Apartment (آپارتمان چند ریسمانی) - MTA

که توسط صفت STAThread میتوانیم مدل ریسمانی COM برای برنامه کاربردی را بصورت STA تنظیم کنیم و اگر از این صفت استفاده نشه، مدل ریسمانی COM برای برنامه کاربردی را بصورت MTA در نظر خواهد گرفت. صفت STAThread فقط میتواند قبل از متد Main اعمال بشه.
چرا برای WindowsApplication پیش فرض آنرا بصورت STA تنظیم میکنه؟ !I don't know

در ضمن هر Thread میتونه دارای یک موقعیت آپارتمانی (Apartment State) برای خودش باشه که برای تغییر آن، از متد SetApartmentState استفاده میشه.

Mrs.Net
پنج شنبه 04 مرداد 1386, 22:47 عصر
این [STAThread] خط باعث میشه برنامه Single-Threaded Apartments باشه!
البته این کد در صورتی اثر داره که از COM استفاده کرده باشید و گرنه این خط اثری در برنامه ندارد.
یعنی چی از com استفاده شده باشه؟!
این کد میتونه باعث بشه برنامه فقط یکبار اجرا بشه؟

Alireza_Salehi
پنج شنبه 04 مرداد 1386, 23:14 عصر
یعنی چی از com استفاده شده باشه؟!
COM مخفف Component Object Model است و پیشرفته ترش +COM !
به طور ساده یعنی از DLL ها و کامپوننت های غیر دات نتی در برنامه استفاده بشه.


این کد میتونه باعث بشه برنامه فقط یکبار اجرا بشه؟

خیر ، اون لینک ها رو با دقت بخونید فرق STA و MTA رو متوجه میشید.

senator_aka
پنج شنبه 04 مرداد 1386, 23:27 عصر
دوستان از لطق همه شما بسیار ممنونم.
بله برنامه از یک component استفاده کرده.

اما یه توضیح بیشتر می خوام راجب اینکه چرا وقتی از یه component استفاده می کنیم باید از STA را هم حتما بگیم.