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