single.php

[呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります。]例外が発生する場合の対処法

Visual Studioのデバッグ時に “例外が発生しました。System.InvalidOperationException: ‘呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります。'” が表示された場合の対処法について備忘録的に投稿します。

STA である必要があります

ここで登場する、”STA” とは “Single Thread Apartment” でCOMやShellを経由して仮想デスクトップなどにアクセスする場合に、スレッドをSTAにして欲しいというのが原因です。

逆に言えば、呼び出すスレッドは Single Thread Apartment(STA)が必須という話です。

対処法としては[Main]関数に[STAThread]属性を追加します。

具体的には、こんな感じで属性が追加できました。

using static WindowsDesktop.VirtualDesktop;

class Program
{
  [STAThread]
  static void Main(string[] args)
  {
    var desktops = WindowsDesktop.VirtualDesktop.GetDesktops();
  }
}

まとめ

Visual Studioのデバッグ時に “例外が発生しました。System.InvalidOperationException: ‘呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります。'” が表示された場合の対処法について書きました。

[Main]関数に[STAThread]属性を追加すると例外を回避できます。

Visual Studioで ‘呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります。’が表示される人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です