ただいま修行中...

ソフトウェア開発において、勉強中で悪戦苦闘の日々

STAThreadについて

2008-10-14 23:36:42 | C#
C#においてClipboardにデータを貼り付ける場合には、SetDataObjectをコールすると、Clipboardにデータを貼り付けることができます。

ただし、メインメソッドに、STAThreadAttribute属性をマークしなくては、ビルドでエラーになってしまいます。

[STAThread]
static void Main()

と宣言しなくてはなりません。

MSDNより抜粋すると、Clipboard クラスは、シングル スレッド アパートメント (STA: Single Thread Apartment) モードに設定されているスレッドでだけ使用できるようになっているからだそうです。

これは、COMを利用するために、付加する属性だそうです。まだ詳しいことはわかっていないので、なぜ、シングル スレッド アパートメントでしか動作できないのかはわかっていませんので、以下は間違いかもしれません。

アパートメントはCOMのスレッドモデルから来ているようです。

COMを利用する際に必要なので、このようにコードに付加されているみたいです。

内部でCOMを利用しているものがあるのでClipboardクラスで、使用する際には、[STAThread]を明示する必要があるようです。


最新の画像もっと見る

コメントを投稿