.NETでForms/WPFを使う場合にお約束のように付けられている STAThreadAttribute ですが、クリップボードを扱う場合などはコンソールアプリでも付ける必要があります。

では逆に、STAThreadAttribute を付けない方がいい場合はあるのでしょうか。

COMサーバを作る場合であれば、MTAの方が複数スレッドから呼び出せることでパフォーマンス向上が狙えるかと思いますが、そうでないアプリケーションでMTAにする理由はあまりないように思えます。.NET内部でCOMサーバーになっているケースもあるとは思いますが、それが前述の STAThreadAttribute が必要な場面だとすると、結局STAにせざるを得ません。

だとするとコンソールアプリケーションやサーバー等を作る場合でも、とりあえず STAThreadAttribute を付けておけばいいのでは?と思ったのですがどうでしょうか。

参考サイト