Tech Racho エンジニアの「?」を「!」に。
  • 開発

新しく作成するスレッドをSTAにする

WIndowsのCOMコンポーネントは、STA(シングルスレッドアパートメント)でないとエラーになります。

Windows Forms Applicationを作ると、デフォルトではMain()にSTAThreadが付いているはずです。このため、普段は問題ありません。

static class Program
{
    [STAThread]
    static void Main()
    {
    }
}

しかし、Threadを新規作成して、そのスレッドないでクリップボードやActiveXコントロールを使おうとすると、ThreadStateExceptionが発生します。

Threadオブジェクトのプロパティで設定しておきましょう。

var th= new Thread(new ThreadStart(threadMethod));
th.SetApartmentState(ApartmentState.STA);
th.Start();

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。