Sdílet prostřednictvím


CA2232: Označte vstupní bod modelu Windows Forms pomocí STAThread

Název_typu

MarkWindowsFormsEntryPointsWithStaThread

CheckId

CA2232

Kategorie

Microsoft.Usage

Změnit rozdělení

Bez rozdělení

Příčina

Odkazuje na sestavení System.Windows.Forms obor názvů a jeho vstupní bod není označen atributem STAThreadAttribute atributu.

Popis pravidla

STAThreadAttributeoznačuje, že COM, model pro používání podprocesů apartment s jedním podprocesem.Tento atribut musí být vstupní bod všechny aplikace používající model Windows Forms; Pokud je vynechán, součásti systému Windows nemusí pracovat správně.Pokud atribut není k dispozici, aplikace používá modelu apartment s více podprocesy není podporována pro model Windows Forms.

[!POZNÁMKA]

Visual Basicprojekty, které používají v rámci aplikace není nutné označit hlavní metodou s STAThread.Visual Basic Kompilátoru se mění automaticky.

Jak opravit porušení

Porušení tohoto pravidla odstranit, přidat STAThreadAttribute atributu na vstupní bod.Pokud MTAThreadAttribute atribut, odeberte jej.

Při potlačení upozornění

Je bezpečné potlačí upozornění od tohoto pravidla, pokud vyvíjíte pro.NET Compact Framework, pro které STAThreadAttribute atributu je zbytečné a není podporován.

Příklad

Následující příklady ukazují správné použití STAThreadAttribute.

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
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);
        }
    }
}