CA2232: Windows フォームのエントリ ポイントを STAThread に設定します
Item | [値] |
---|---|
規則 ID | CA2232 |
カテゴリ | Microsoft.Usage |
互換性に影響する変更点 | なし |
原因
アセンブリが System.Windows.Forms 名前空間を参照しており、そのエントリ ポイントが System.STAThreadAttribute 属性でマークされていません。
規則の説明
STAThreadAttribute は、アプリケーションの COM スレッド モデルがシングルスレッド アパートメントであることを示しています。 この属性は、Windows フォームを使用するすべてのアプリケーションのエントリ ポイントに指定する必要があります。省略すると、Windows コンポーネントが正常に機能しないことがあります。 属性が存在しない場合、アプリケーションはマルチスレッド アパートメント モデルを使用します。これは、Windows フォームではサポートされていません。
Note
Application Framework を使う Visual Basic プロジェクトでは、Main メソッドを STAThread でマークする必要はありません。 これは Visual Basic コンパイラによって自動的に行われます。
違反の修正方法
この規則違反を修正するには、エントリ ポイントに STAThreadAttribute 属性を追加します。 System.MTAThreadAttribute 属性が存在する場合は削除します。
どのようなときに警告を抑制するか
STAThreadAttribute 属性が不要でサポートされない .NET Compact Framework 向けの開発を行っている場合は、この規則による警告を抑制しても問題ありません。
例
次の例は、STAThreadAttribute の正しい使い方を示しています。
using System;
using System.Windows.Forms;
namespace UsageLibrary
{
public class MyForm: Form
{
public MyForm()
{
this.Text = "Hello World!";
}
// Satisfies rule: MarkWindowsFormsEntryPointsWithStaThread.
[STAThread]
public static void Main()
{
MyForm aform = new MyForm();
Application.Run(aform);
}
}
}
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示