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 である必要があります。’が表示される人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。
