いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

STAThreadについて

Visual Studioなどでソースを作成すると、Mainメソッドの上に
アトリビュートで、以下のものが付いています。

[STAThread]
public static void Main()
{
    ...
    ...
    ...
}

このSTAThreadってやつ、本などを見るとおまじないみたいなもの
なので、気にスルナみたいなように書かれています。
気になりましたので、ちょっと調べてみました。
以下、間違っているかもしれません・・・。m(_ _)m
まず、STAThreadの意味は、シングルスレッドアパートメントの略らしいです。
アパートメントの概念はCOMのスレッドモデルから来ている模様。(でも、私自身COMを知らないから微妙)
COM/OLEを利用する際に必要なので、このようにコードに付加されているみたいです。
WinFormsは内部でCOMを利用しているものがあるので(ドラッグ&ドロップなど)
その場合は、この属性を指定していないとうまく動かないみたいです。

なかなか、ドキュメントがないのではっきりとは理解していませんが、

指定しておいた方が、無難。

と、本に書かれている事と同じ結論に達してしまいましたw

詳しい方いらっしゃいましたら、教えてくださいm(_ _)m

以下、参考にしたリソースです。

[あとがき]
とてもわかりやすく説明してくださっている方がいたので、リンク貼らせてもらいます。

[あとがき2]
さらにわかりやすく説明してくださっている方がいたので、リンク貼らせてもらいます。

成る程・・やっと意味がわかりました。感謝m(_ _)m