Condividi tramite


CA2232: Contrassegnare i punti di ingresso del Windows Form con STAThread

Articolo Valore
ID regola CA2232
Category Microsoft.Usage
Modifica Nessuna interruzione

Causa

Un assembly fa riferimento allo System.Windows.Forms spazio dei nomi e il relativo punto di ingresso non è contrassegnato con l'attributo System.STAThreadAttribute .

Descrizione regola

STAThreadAttribute indica che il modello di threading COM per l'applicazione è apartment a thread singolo. Questo attributo deve essere presente sul punto di ingresso di qualsiasi applicazione che utilizza Windows Form; se omesso è possibile che il componente Windows non funzioni correttamente. Se l'attributo non è presente, l'applicazione usa il modello apartment multithreading, che non è supportato per Windows Form.

Nota

I progetti Visual Basic che usano Application Framework non devono contrassegnare il metodo Main con STAThread. Il compilatore Visual Basic esegue automaticamente questa operazione.

Come correggere le violazioni

Per correggere una violazione di questa regola, aggiungere l'attributo STAThreadAttribute al punto di ingresso. Se l'attributo System.MTAThreadAttribute è presente, rimuoverlo.

Quando eliminare gli avvisi

È possibile eliminare un avviso da questa regola se si sviluppa per .NET Compact Framework, per cui l'attributo STAThreadAttribute non è necessario e non supportato.

Esempio

Gli esempi seguenti illustrano l'utilizzo corretto di 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);
        }
    }
}