CA2232: Marcar pontos de entrada do Windows Forms com STAThread
Item | Valor |
---|---|
RuleId | CA2232 |
Categoria | Microsoft.Usage |
Alteração da falha | Sem interrupção |
Causa
Um assembly faz referência ao namespace System.Windows.Forms, e seu ponto de entrada não está marcado com o atributo System.STAThreadAttribute.
Descrição da regra
STAThreadAttribute indica que o modelo de threading COM para o aplicativo é Single-Threaded Apartment. Esse atributo deve estar presente no ponto de entrada de qualquer aplicativo que use o Windows Forms; se ele for omitido, os componentes do Windows poderão não funcionar corretamente. Se o atributo não estiver presente, o aplicativo usará o modelo Multi-Threaded Apartment, que não tem suporte para o Windows Forms.
Observação
Os projetos do Visual Basic que usam o Application Framework não precisam marcar o método Main com STAThread. O compilador do Visual Basic faz isso automaticamente.
Como corrigir violações
Para corrigir uma violação dessa regra, adicione o atributo STAThreadAttribute ao ponto de entrada. Se o atributo System.MTAThreadAttribute estiver presente, remova-o.
Quando suprimir avisos
É seguro suprimir um aviso dessa regra caso você esteja desenvolvendo para o .NET Compact Framework, para o qual o atributo STAThreadAttribute é desnecessário e não tem suporte.
Exemplo
Os seguintes exemplos demonstram o uso correto de 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);
}
}
}
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de