Thread.GetApartmentState メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As Thread Dim returnValue As ApartmentState returnValue = instance.GetApartmentState
マネージ スレッドのアパートメント状態を示す ApartmentState 値の 1 つ。既定値は ApartmentState.Unknown です。


GetApartmentState、SetApartmentState、および TrySetApartmentState の各メソッドのコード例を次に示します。このコード例ではスレッドを作成します。スレッドを開始する前に、GetApartmentState によって初期状態 ApartmentState.Unknown を表示し、SetApartmentState によって、この状態を ApartmentState.STA に変更します。TrySetApartmentState メソッドで、状態を ApartmentState.MTA に変更しようとすると、アパートメント状態が既に設定されているため、false が返されます。同じ操作を SetApartmentState を使って実行しても、InvalidOperationException がスローされます。
スレッドの開始後、TrySetApartmentState メソッドが再度実行されます。今度は、スレッドが既に開始されているため、ThreadStateException がスローされます。
Imports System Imports System.Threading Module Example Sub Main() Dim t As New Thread(AddressOf ThreadProc) Console.WriteLine("Before setting apartment state: {0}", _ t.GetApartmentState()) t.SetApartmentState(ApartmentState.STA) Console.WriteLine("After setting apartment state: {0}", _ t.GetApartmentState()) Dim result As Boolean = _ t.TrySetApartmentState(ApartmentState.MTA) Console.WriteLine("Try to change state: {0}", result) t.Start() Thread.Sleep(500) Try t.TrySetApartmentState(ApartmentState.STA) Catch ex As ThreadStateException Console.WriteLine("ThreadStateException occurs " & _ "if apartment state is set after starting thread.") End Try t.Join() End Sub Sub ThreadProc() Thread.Sleep(2000) End Sub End Module ' This code example produces the following output: ' 'Before setting apartment state: Unknown 'After setting apartment state: STA 'Try to change state: False 'ThreadStateException occurs if apartment state is set after starting thread.
using System; using System.Threading; class Example { public static void Main() { Thread t = new Thread(ThreadProc); Console.WriteLine("Before setting apartment state: {0}", t.GetApartmentState()); t.SetApartmentState(ApartmentState.STA); Console.WriteLine("After setting apartment state: {0}", t.GetApartmentState()); bool result = t.TrySetApartmentState(ApartmentState.MTA); Console.WriteLine("Try to change state: {0}", result); t.Start(); Thread.Sleep(500); try { t.TrySetApartmentState(ApartmentState.STA); } catch (ThreadStateException) { Console.WriteLine("ThreadStateException occurs " + "if apartment state is set after starting thread."); } t.Join(); } public static void ThreadProc() { Thread.Sleep(2000); } } /* This code example produces the following output: Before setting apartment state: Unknown After setting apartment state: STA Try to change state: False ThreadStateException occurs if apartment state is set after starting thread. */
using namespace System; using namespace System::Threading; void ThreadProc() { Thread::Sleep(2000); }; void main() { Thread^ t = gcnew Thread(gcnew ThreadStart(ThreadProc)); Console::WriteLine("Before setting apartment state: {0}", t->GetApartmentState()); t->SetApartmentState(ApartmentState::STA); Console::WriteLine("After setting apartment state: {0}", t->GetApartmentState()); bool result = t->TrySetApartmentState(ApartmentState::MTA); Console::WriteLine("Try to change state: {0}", result); t->Start(); Thread::Sleep(500); try { t->TrySetApartmentState(ApartmentState::STA); } catch (ThreadStateException^) { Console::WriteLine("ThreadStateException occurs " + "if apartment state is set after starting thread."); } t->Join(); } /* This code example produces the following output: Before setting apartment state: Unknown After setting apartment state: STA Try to change state: False ThreadStateException occurs if apartment state is set after starting thread. */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からThread.GetApartmentState メソッドを検索する場合は、下記のリンクをクリックしてください。

- Thread.GetApartmentState メソッドのページへのリンク