[C#]現在のスレッドはシングル スレッド アパートメントでないため… エラーが出たときの対処法

コンソールアプリで、WinFormのコントロールを使用すると以下の例外が発生します。

System.Threading.ThreadStateException はハンドルされませんでした。
  Message=現在のスレッドはシングル スレッド アパートメントでないため、ActiveX コントロール 'xxxx' をインスタンス化できません。
  Source=System.Windows.Forms
  StackTrace:
       場所 Program.Main(String[] args) 場所 Program.cs:行 33
       場所 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       場所 System.Threading.ThreadHelper.ThreadStart()
  InnerException:





この場合の対処法は、Mainメソッドの上に,[STAThread]を追加しシングルスレッドアパートメントである事を明示させます。

static void Main( string[] args ) {
    ...
}


    ↓

[STAThread]
static void Main( string[] args ) {
    ...
}

関連記事

コメントを残す

メールアドレスが公開されることはありません。