クリップボードにコピーした時にエラー
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();
以上です。
コメント