本ブログはアフィリエイト広告を利用しています。

C# System.Threading.ThreadStateException: ‘OLE を呼び出す前に、現在のスレッドをシングル スレッド アパートメント (STA) モードに設定しておく必要があります。’

クリップボードにコピーした時にエラー

C#でクリップボードに値をコピーする際にこのようなエラーが発生しました。

System.Threading.ThreadStateException: ‘OLE を呼び出す前に、現在のスレッドをシングル スレッド アパートメント (STA) モードに設定しておく必要があります。’

エラーが発生したコードはこちらです。

Clipboard.SetText("クリップボードにコピーする文字列");

対処法1

STAThreadをMain関数に付与すればいいみたいです。

[STAThread]
static void Main()
{
    Clipboard.SetText("クリップボードにコピーする文字列");
}

対処法2

STAThreadを付けたくない、付けてもやっぱりエラーが出てしまう時はこちらでも可能です。

私はWPFでコピーを使用したかったのですが、Main関数ではないからか対処法1では上手くいかなかったのでこちらで対応しました。

動けば良いやって感じだったのであまり深追いはしていません。

Thread thread = new Thread(() => Clipboard.SetText("クリップボードにコピーする文字列"));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();

以上です。

コメント

タイトルとURLをコピーしました