Thread.TrySetApartmentState メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Thread.TrySetApartmentState メソッドの意味・解説 

Thread.TrySetApartmentState メソッド

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

スレッド開始する前にスレッドアパートメント状態を設定します

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function TrySetApartmentState ( _
    state As ApartmentState _
) As Boolean
Dim instance As Thread
Dim state As ApartmentState
Dim returnValue As Boolean

returnValue = instance.TrySetApartmentState(state)
public bool TrySetApartmentState (
    ApartmentState state
)
public:
bool TrySetApartmentState (
    ApartmentState state
)
public boolean TrySetApartmentState (
    ApartmentState state
)
public function TrySetApartmentState (
    state : ApartmentState
) : boolean

パラメータ

state

新しアパートメント状態。

戻り値
アパートメント状態が設定されている場合trueそれ以外場合false

例外例外
例外種類条件

ArgumentException

state有効なアパートメント状態ではありません。

ThreadStateException

スレッドが既に起動してます。

解説解説

スレッド開始する前にアパートメント状態が設定されていなかった場合新しスレッドは、ApartmentState.MTA として初期化されますアパートメント状態は、スレッド開始前設定されている必要があります

メモメモ

メイン アプリケーション スレッドは、既定で、ApartmentState.MTA初期化されますメイン アプリケーション スレッドアパートメント状態を ApartmentState.STA に設定する唯一の方法は、STAThreadAttribute 属性をエントリ ポイントメソッド適用することです。

TrySetApartmentState メソッドを GetApartmentState メソッドおよび SetApartmentState メソッド組み合わせて使用すると、ApartmentState プロパティ置き換えられます。

使用例使用例

GetApartmentStateSetApartmentState、および 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.
 */
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からThread.TrySetApartmentState メソッドを検索した結果を表示しています。
Weblioに収録されているすべての辞書からThread.TrySetApartmentState メソッドを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からThread.TrySetApartmentState メソッド を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

Thread.TrySetApartmentState メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Thread.TrySetApartmentState メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS