CA2232: Marcar puntos de entrada de Windows Forms con STAThread
Elemento | Valor |
---|---|
RuleId | CA2232 |
Category | Microsoft.Usage |
Cambio importante | Poco problemático |
Causa
Un ensamblado hace referencia al espacio de nombres System.Windows.Forms y su punto de entrada no está marcado con el atributo System.STAThreadAttribute.
Descripción de la regla
STAThreadAttribute indica que el modelo de subprocesos COM de la aplicación es contenedor uniproceso (STA). Este atributo debe estar presente en el punto de entrada de cualquier aplicación que utilice Formularios Windows Forms; si se omite, los componentes de Windows podrían no funcionar correctamente. Si el atributo no está presente, la aplicación usa el modelo de contenedor multiproceso, que no se admite para Windows Forms.
Nota:
Los proyectos de Visual Basic que usan Application Framework no tienen que marcar el método Main con STAThread. El compilador de Visual Basic lo hace automáticamente.
Cómo corregir infracciones
Para corregir una infracción de esta regla, agregue el atributo STAThreadAttribute al punto de entrada. Si el atributo System.MTAThreadAttribute está presente, quítelo.
Cuándo suprimir las advertencias
Es seguro suprimir una advertencia de esta regla si su lenguaje de desarrollo es .NET Compact Framework, donde el atributo STAThreadAttribute no es necesario y no se admite.
Ejemplo
Los ejemplos siguientes muestran el uso correcto 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);
}
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de