STAThreadAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir uygulama için COM iş parçacığı modelinin tek iş parçacıklı daire (STA) olduğunu gösterir.
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
- Devralma
- Öznitelikler
Açıklamalar
Bu özniteliği giriş noktası yöntemine ( Main()
C# ve Visual Basic'teki yöntem) uygulayın. Diğer yöntemler üzerinde hiçbir etkisi yoktur. Kodunuzda başlattığınız iş parçacıklarının daire durumunu ayarlamak için, iş parçacığını Thread.SetApartmentState başlatmadan önce veya Thread.TrySetApartmentState yöntemini kullanın.
Not
COM iş parçacığı oluşturma modellerine genel bakış için bkz. COM İş Parçacığı Oluşturma Modellerini Anlama ve Kullanma.
COM iş parçacığı oluşturma modelleri yalnızca COM birlikte çalışması kullanan uygulamalar için geçerlidir. COM iş parçacığı modeli tek iş parçacıklı daireye veya çok iş parçacıklı daireye ayarlanabilir. Uygulama iş parçacığı yalnızca iş parçacığı aslında bir COM bileşenine çağrı yaptığında COM birlikte çalışma için başlatılır. COM birlikte çalışma kullanılmazsa, iş parçacığı başlatılmaz ve varsa özniteliğinin STAThreadAttribute hiçbir etkisi olmaz.
.NET Framework sürüm 2.0'dan başlayarak, COM birlikte çalışma için varsayılan iş parçacığı modeli, aşağıdaki tabloda gösterildiği gibi uygulamanızı geliştirmekte olduğunuz dile bağlıdır.
Dil | COM daire modeli |
---|---|
C# | Çok iş parçacıklı daire |
C++ | Çok iş parçacıklı daire |
Visual Basic | Tek iş parçacıklı daire |
Bu varsayılanları değiştirmek için özniteliğini STAThreadAttribute kullanarak uygulamanın iş parçacığı modelini ayarlayabilir veya iş parçacığını Thread.SetApartmentState başlatmadan önce veya Thread.TrySetApartmentState yöntemini çağırarak belirli bir iş parçacığı için iş parçacığı modelini ayarlayabilirsiniz. C++'da, daire modelini belirtmek için /CLRTHREADATTRIBUTE bağlayıcı seçeneğini de kullanabilirsiniz.
ASP.NET uygulamalar, sayfayaASPCompat
STA iş parçacığı havuzu tarafından hizmet verilmesini zorlamak true
için @ Page yönergesinin özniteliğini ayarlamalıdır.
İş parçacığı modelini tek iş parçacıklı daireye açıkça ayarlamak için özniteliğini kullanmak STAThreadAttribute isteyeceğiniz durumlardan bazıları şunlardır:
Bir Windows Forms uygulaması geliştiriyorsun. Pano veya Windows ortak iletişim kutuları gibi Windows sistem bileşenleriyle iletişim kurarlarsa veya sürükleyip bırakma işlevi gibi sistem özelliklerini kullanıyorlarsa, Windows Forms uygulamalarının tek iş parçacıklı olması gerekir. C# için Windows Forms Uygulama şablonu özniteliğini otomatik olarak C# projelerine ekler STAThreadAttribute . Visual Basic için tek iş parçacıklı daire modeli varsayılan olduğundan özniteliğine gerek yoktur.
Visual Basic kitaplığını çağıran ve com birlikte çalışma özelliğini kullanan bir C# uygulaması geliştireceksiniz. Tek iş parçacıklı daire modeli Visual Basic için varsayılan olduğundan, özniteliğini kullanarak uygulamanızın iş parçacığı modelini tek iş parçacıklı olarak STAThreadAttribute değiştirmeniz gerekir.
Uygulamanız, tek iş parçacıklı daire modelini kullanan COM bileşenlerine çağrı yapar.
Oluşturucular
STAThreadAttribute() |
STAThreadAttribute sınıfının yeni bir örneğini başlatır. |
Özellikler
TypeId |
Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır. (Devralındığı yer: Attribute) |
Yöntemler
Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür. (Devralındığı yer: Attribute) |
GetHashCode() |
Bu örneğe ilişkin karma kodu döndürür. (Devralındığı yer: Attribute) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
IsDefaultAttribute() |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir. (Devralındığı yer: Attribute) |
Match(Object) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1). (Devralındığı yer: Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar. (Devralındığı yer: Attribute) |