CA2232: Windows Forms-Einstiegspunkte mit STAThread markieren.

Element Wert
RuleId CA2232
Category Microsoft.Usage
Unterbrechende Änderung Nicht unterbrechend

Ursache

Eine Assembly verweist auf den System.Windows.Forms-Namespace, und ihr Einstiegspunkt ist nicht mit dem System.STAThreadAttribute-Attribut markiert.

Regelbeschreibung

STAThreadAttribute gibt an, dass STA (Singlethread-Apartment) als COM-Threadingmodell für eine Anwendung verwendet wird. Dieses Attribut muss am Einstiegspunkt jeder Anwendung vorhanden sein, die Windows Forms verwendet. Wird es weggelassen, funktionieren die Windows-Komponenten eventuell nicht richtig. Wenn das Attribut nicht vorhanden ist, verwendet die Anwendung das Multithread-Apartmentmodell, das für Windows Forms nicht unterstützt wird.

Hinweis

Visual Basic-Projekte, die das Anwendungsframework verwenden, müssen die Main-Methode nicht mit STAThread markieren. Der Visual Basic-Compiler erledigt dies automatisch.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, fügen Sie dem Einstiegspunkt das STAThreadAttribute-Attribut hinzu. Wenn das System.MTAThreadAttribute-Attribut vorhanden ist, entfernen Sie es.

Wann sollten Warnungen unterdrückt werden?

Eine Warnung dieser Regel kann sicher unterdrückt werden, wenn Sie für .NET Compact Framework entwickeln, für das das STAThreadAttribute-Attribut nicht erforderlich ist und nicht unterstützt wird.

Beispiel

Die folgenden Beispiele veranschaulichen die korrekte Verwendung von 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);
        }
    }
}