Visual Studioなどでソースを作成すると、Mainメソッドの上に
アトリビュートで、以下のものが付いています。
[STAThread] public static void Main() { ... ... ... }
このSTAThreadってやつ、本などを見るとおまじないみたいなもの
なので、気にスルナみたいなように書かれています。
気になりましたので、ちょっと調べてみました。
以下、間違っているかもしれません・・・。m(_ _)m
まず、STAThreadの意味は、シングルスレッドアパートメントの略らしいです。
アパートメントの概念はCOMのスレッドモデルから来ている模様。(でも、私自身COMを知らないから微妙)
COM/OLEを利用する際に必要なので、このようにコードに付加されているみたいです。
WinFormsは内部でCOMを利用しているものがあるので(ドラッグ&ドロップなど)
その場合は、この属性を指定していないとうまく動かないみたいです。
なかなか、ドキュメントがないのではっきりとは理解していませんが、
指定しておいた方が、無難。
と、本に書かれている事と同じ結論に達してしまいましたw
詳しい方いらっしゃいましたら、教えてくださいm(_ _)m
以下、参考にしたリソースです。
- アプリケーション開始時のフォームを非表示にする(DOBON.NET: STAThreadについても触れられている記事です。)
- Why is STAThread required?
- What does the STAThread attribute really do?
- What do I have to use the STAThread attribute for my main method in my app?
- What does "[STAThread]" do?
- Component Object Model
[あとがき]
とてもわかりやすく説明してくださっている方がいたので、リンク貼らせてもらいます。
[あとがき2]
さらにわかりやすく説明してくださっている方がいたので、リンク貼らせてもらいます。
成る程・・やっと意味がわかりました。感謝m(_ _)m