CA2232: Pontos de entrada marca Windows Forms com STAThread
TypeName |
MarkWindowsFormsEntryPointsWithStaThread |
CheckId |
CA2232 |
<strong>Categoria</strong> |
Microsoft.Usage |
Alteração significativa |
Não separável |
Causa
Faz referência a um assembly de System.Windows.Forms espaço para nome e o seu ponto de entrada não está marcado com o System.STAThreadAttribute atributo.
Descrição da regra
STAThreadAttributeindica que o COM o modelo para o aplicativo de threading STA.Este atributo deve estar presente no ponto de entrada de qualquer aplicativo que usa o Windows Forms; Se ele for omitido, os componentes do Windows podem não funcionar corretamente.Se o atributo não estiver presente, o aplicativo usa o modelo de multithreaded apartment, o que não há suporte para Windows Forms.
Observação |
---|
Visual Basicprojetos que usam a estrutura do aplicativo não é necessário marcar o principal método com STAThread.O Visual Basic compilador faz isso automaticamente. |
Como corrigir violações
Para corrigir uma violação desta regra, adicione a STAThreadAttribute de atributo para o ponto de entrada.Se a System.MTAThreadAttribute atributo estiver presente, removê-lo.
Quando suprimir avisos
É seguro eliminar um aviso esta regra, se você estiver desenvolvendo para o.NET Compact Framework, para os quais o STAThreadAttribute atributo é desnecessário e não suportado.
Exemplo
Os exemplos a seguir demonstram o uso correto dos 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);
}
}
}