「Attributeを適用する」
MTA(Multi Threaded Apartment)ではOLEを介した何かが出来ない、ということで、STA(Single Threaded Apartment)にプログラムを直すことになりました。
さいわい、以前読んだApplication Domainの説明の中でThread Apartmentの話がいっしょに載っていたので理屈は判ったのですが、じゃぁ、実際にはどうするのか、というはなしが全然見当つかずにしばらく悩んでみたり。
エラーメッセージによると
MainメソッドにSTAThreadAttributeを適用してください
……らしいのですが、そもそも、Attributeの適用ってのはいったい何なのか見当つきません。確かにMSDNにもこのAttributeを適用すればいいということは書いてあるのですが、当の適用の方法が全然引っかからないという。
しばらく悩んだ末、結論としては以下「らしい」ということは判りました。
- Attributeは、「ほげほげAttribute」という名前のクラスのことらしい。
- 「[]」の中に「ほげほげ」の部分だけを書くと、適用されるらしい
- AttributeはMSDNでは「属性」と全部日本語訳されているらしい(^^;)
……確かに「属性の適用」で引っかかるという(^^;)。うわーん、用語が翻訳されてるなんて気づかないよー。
ちなみに、STAThreadAttributeを適用するにはこんな感じです。
[STAThread(true)]
public static void Main()
{
}
あ、.Net Compact FrameworkはMTAThreadAttributeはあっても、STAThreadAttributeはないので、このままではコンパイルは通りませんが。それ以前にOLEを介していない(はず)ので、こんなことしなくてもいいんですけど。