CA2232 : Marquez les points d'entrée Windows Forms avec STAThreadCA2232: Mark Windows Forms entry points with STAThread

TypeNameTypeName MarkWindowsFormsEntryPointsWithStaThreadMarkWindowsFormsEntryPointsWithStaThread
CheckIdCheckId CA2232CA2232
CategoryCategory Microsoft.UsageMicrosoft.Usage
Modification avec ruptureBreaking Change Sans ruptureNon Breaking

CauseCause

Fait référence à un assembly la System.Windows.Forms espace de noms et son point d’entrée n’est pas marqué avec le System.STAThreadAttribute attribut.An assembly references the System.Windows.Forms namespace, and its entry point is not marked with the System.STAThreadAttribute attribute.

Description de la règleRule description

STAThreadAttribute Indique que le modèle pour l’application de thread COM est à thread unique cloisonné.STAThreadAttribute indicates that the COM threading model for the application is single-threaded apartment. Cet attribut doit être présent au point d'entrée de toute application qui utilise des Windows Forms ; s'il est omis, les composants Windows peuvent ne pas fonctionner correctement.This attribute must be present on the entry point of any application that uses Windows Forms; if it is omitted, the Windows components might not work correctly. Si l’attribut n’est pas présent, l’application utilise le modèle de cloisonnement multithread, ce qui n’est pas pris en charge pour les Windows Forms.If the attribute is not present, the application uses the multithreaded apartment model, which is not supported for Windows Forms.

Note

Visual BasicVisual Basic les projets qui utilisent l’infrastructure d’Application n’ont pas marquer le *Main* méthode avec STAThread. projects that use the Application Framework do not have to mark the *Main* method with STAThread. Le Visual BasicVisual Basic compilateur effectue automatiquement.The Visual BasicVisual Basic compiler does it automatically.

Comment corriger les violationsHow to fix violations

Pour corriger une violation de cette règle, ajoutez le STAThreadAttribute attribut au point d’entrée.To fix a violation of this rule, add the STAThreadAttribute attribute to the entry point. Si le System.MTAThreadAttribute attribut n’est présent, supprimez-le.If the System.MTAThreadAttribute attribute is present, remove it.

Quand supprimer les avertissementsWhen to suppress warnings

Il est possible de supprimer un avertissement de cette règle si vous développez pour le .NET Compact Framework pour lequel le STAThreadAttribute attribut n’est pas nécessaire et non pris en charge.It is safe to suppress a warning from this rule if you are developing for the .NET Compact Framework, for which the STAThreadAttribute attribute is unnecessary and not supported.

ExempleExample

Les exemples suivants illustrent l’utilisation correcte de STAThreadAttribute:The following examples demonstrate the correct usage of 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);
        }
    }
}
Imports System
Imports System.Windows.Forms

NameSpace UsageLibrary

Public Class MyForm
   Inherits Form

   Public Sub New()
      Me.Text = "Hello World!"
   End Sub 'New
    
   ' Satisfies rule: MarkWindowsFormsEntryPointsWithStaThread.
   <STAThread()> _
   Public Shared Sub Main()
      Dim aform As New MyForm()
      Application.Run(aform)
   End Sub

End Class

End Namespace