Saya belajar C # 3.5 dan saya ingin tahu apa yang [STAThread]
ada di program kami?
sumber
Saya belajar C # 3.5 dan saya ingin tahu apa yang [STAThread]
ada di program kami?
Pada STAThreadAttribute
dasarnya adalah persyaratan untuk pompa pesan Windows untuk berkomunikasi dengan komponen COM. Meskipun inti Windows Forms tidak menggunakan COM, banyak komponen OS seperti dialog sistem menggunakan teknologi ini.
MSDN menjelaskan alasannya dengan sedikit lebih detail:
STAThreadAttribute menunjukkan bahwa model threading COM untuk aplikasi adalah apartemen single-threaded. Atribut ini harus ada pada titik masuk aplikasi apa pun yang menggunakan Formulir Windows; jika dihilangkan, komponen Windows mungkin tidak berfungsi dengan benar. Jika atribut tidak ada, aplikasi menggunakan model apartemen multithreaded, yang tidak didukung untuk Formulir Windows.
Posting blog ini ( Mengapa diperlukan STAThread? ) Juga menjelaskan persyaratan dengan cukup baik. Jika Anda ingin tampilan yang lebih mendalam tentang bagaimana model threading bekerja di tingkat CLR, lihat artikel Majalah MSDN ini dari Juni 2004 (Archived, April 2009).
[STAThread]
?Ini memberitahu kompiler bahwa Anda berada dalam model Apartemen Single Thread. Ini adalah hal COM yang jahat, biasanya digunakan untuk Windows Forms (GUI) karena menggunakan Win32 untuk menggambarnya, yang diimplementasikan sebagai STA. Jika Anda menggunakan sesuatu yang model STA dari beberapa utas maka Anda mendapatkan objek yang rusak.
Inilah sebabnya mengapa Anda harus memohon ke Gui dari utas lain (jika Anda telah melakukan pengkodean formulir apa pun).
Pada dasarnya jangan khawatir, terima saja bahwa utas Windows GUI harus ditandai sebagai STA jika tidak, hal-hal aneh terjadi.
sumber
Baca info lebih lanjut di sini (Diarsipkan, Juni 2009)
dan
Mengapa STAThread diperlukan?
sumber