STAThreadAttribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menunjukkan bahwa model utas COM untuk aplikasi adalah apartemen berulir tunggal (STA).
public ref class STAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class STAThreadAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class STAThreadAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type STAThreadAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type STAThreadAttribute = class
inherit Attribute
Public NotInheritable Class STAThreadAttribute
Inherits Attribute
- Warisan
- Atribut
Keterangan
Terapkan atribut ini ke metode titik masuk ( Main()
metode dalam C# dan Visual Basic). Ini tidak berpengaruh pada metode lain. Untuk mengatur status apartemen utas yang Anda mulai dalam kode Anda, gunakan Thread.SetApartmentState metode atau Thread.TrySetApartmentState sebelum memulai utas.
Catatan
Untuk gambaran umum model utas COM, lihat Memahami dan Menggunakan Model Utas COM.
Model utas COM hanya berlaku untuk aplikasi yang menggunakan interop COM. Model utas COM dapat diatur ke apartemen berulir tunggal atau apartemen multithreaded. Utas aplikasi hanya diinisialisasi untuk interop COM jika utas benar-benar melakukan panggilan ke komponen COM. Jika interop COM tidak digunakan, maka utas tidak diinisialisasi, dan STAThreadAttribute atribut , jika ada, tidak berpengaruh.
Dimulai dengan .NET Framework versi 2.0, model utas default untuk interop COM bergantung pada bahasa tempat Anda mengembangkan aplikasi, seperti yang ditunjukkan tabel berikut.
Bahasa | Model apartemen COM |
---|---|
C# | Apartemen multithreaded |
C++ | Apartemen multithreaded |
Visual Basic | Apartemen berulir tunggal |
Untuk mengubah default ini, Anda menggunakan STAThreadAttribute atribut untuk mengatur model utas untuk aplikasi, atau memanggil Thread.SetApartmentState metode atau Thread.TrySetApartmentState sebelum memulai utas untuk mengatur model utas untuk utas tertentu. Di C++, Anda juga dapat menggunakan opsi linker /CLRTHREADATTRIBUTE untuk menentukan model apartemen.
ASP.NET aplikasi harus mengatur ASPCompat
atribut arahan Halaman @ ke true
untuk memaksa halaman dilayankan oleh kumpulan utas STA.
Berikut adalah beberapa kasus di mana Anda ingin menggunakan STAThreadAttribute atribut untuk secara eksplisit mengatur model utas ke apartemen berulir tunggal:
Anda sedang mengembangkan aplikasi Windows Forms. Aplikasi Windows Forms harus berutas tunggal jika berkomunikasi dengan komponen sistem Windows seperti kotak dialog umum Clipboard atau Windows, atau jika mereka menggunakan fitur sistem seperti fungsionalitas seret dan letakkan. Templat Aplikasi Formulir Windows untuk C# secara otomatis menambahkan atribut ke STAThreadAttribute proyek C#. Karena model apartemen berulir tunggal adalah default untuk Visual Basic, tidak perlu atribut .
Anda mengembangkan aplikasi C# yang memanggil pustaka Visual Basic, yang, pada gilirannya, bergantung pada interop COM. Karena model apartemen berulir tunggal adalah default untuk Visual Basic, Anda harus mengubah model utas aplikasi Anda menjadi utas tunggal dengan menggunakan STAThreadAttribute atribut .
Aplikasi Anda melakukan panggilan ke komponen COM yang menggunakan model apartemen utas tunggal.
Konstruktor
STAThreadAttribute() |
Menginisialisasi instans baru kelas STAThreadAttribute. |
Properti
TypeId |
Ketika diimplementasikan di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute. (Diperoleh dari Attribute) |
Metode
Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
GetHashCode() |
Mengembalikan kode hash untuk instans ini. (Diperoleh dari Attribute) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
IsDefaultAttribute() |
Ketika ditimpa di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. (Diperoleh dari Attribute) |
Match(Object) |
Saat ditimpa di kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai. (Diperoleh dari Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka. (Diperoleh dari Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1). (Diperoleh dari Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Menyediakan akses ke properti dan metode yang diekspos oleh objek. (Diperoleh dari Attribute) |