CA2232: marcar pontos de entrada dos Windows Forms com STAThread
TypeName |
MarkWindowsFormsEntryPointsWithStaThread |
CheckId |
CA2232 |
Categoria |
Microsoft.Usage |
Alteração Significativa |
Sem Quebra |
Causa
Um assembly faz referência ao namespace de System.Windows.Forms , e seu ponto de entrada não é marcado com o atributo de STAThreadAttribute .
Descrição da Regra
STAThreadAttribute indica que o modelo de threading COM para o aplicativo é STA. de thread único.Esta deverá de atributo estiver presente no ponto de entrada de qualquer aplicativo que usa o Windows Forms; se for omitida, os componentes do windows podem não funcionar corretamente.Se o atributo não estiver presente, o aplicativo usa o modelo multi-threaded STA. do, que não tem suporte no Windows Forms.
Observação |
---|
Visual Basic projetos que usa a estrutura de aplicativo não precisa marcar o método dePrincipal com STAThread.O compilador deVisual Basic faz automaticamente. |
Como Corrigir Violações
Para corrigir uma violação desta regra, adicione o atributo de STAThreadAttribute ao ponto de entrada.Se o atributo de MTAThreadAttribute estiver presente, removê-lo.
Quando Suprimir Alertas
É seguro suprimir um aviso dessa regra se você está desenvolvendo para .NET Compact Framework, para que o atributo de STAThreadAttribute é desnecessário e não tiver suporte.
Exemplo
Os exemplos a seguir demonstram o uso correto de 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);
}
}
}