Pontos de entrada marca Windows Forms com STAThread
TypeName |
MarkWindowsFormsEntryPointsWithStaThread |
CheckId |
CA2232 |
Category (Categoria) |
Microsoft.uso |
Quebrando alterar |
Não separável |
Causa
O faz referência a um assemblySystem.Windows.Forms espaço para nome e seu ponto de entrada não está marcado com o System.STAThreadAttribute atributo.
Descrição da regra
STAThreadAttribute indica que o COM o modelo para o aplicativo de threading single-threaded apartment. Este atributo deve estar presente no ponto de entrada de qualquer aplicativo que usa o Windows Forms; se for omitido, os componentes do Windows podem não funcionar corretamente.Se o atributo não estiver presente, o aplicativo usa o modelo multithreaded apartment, o qual não há suporte para Windows Forms.
Observação: |
---|
Visual Basic projetos que usam a estrutura de aplicativos não são necessário marcar a Principal método com STAThread.The Visual Basic compilador faz isso automaticamente. |
Como corrigir violações
Para corrigir uma violação dessa regra, adicione o STAThreadAttribute o atributo para o ponto de entrada. Se o System.MTAThreadAttribute atributo estiver presente, removê-lo.
Quando suprimir avisos
É seguro eliminar um aviso essa regra se você estiver desenvolvendo para o .NET Compact estrutura, para o qual o STAThreadAttribute o atributo é desnecessário e não há 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);
}
}
}