CA2232: Windows Forms 진입점을 STAThread를 사용하여 표시하십시오.

항목
RuleId CA2232
범주 Microsoft.Usage
주요 변경 내용 주요 변경 아님

원인

어셈블리가 System.Windows.Forms 네임스페이스를 참조하고 해당 진입점이 System.STAThreadAttribute 특성으로 표시되지 않습니다.

규칙 설명

STAThreadAttribute는 애플리케이션의 COM 스레딩 모델이 단일 스레드 아파트임을 나타냅니다. 이 특성은 Windows Forms을 사용하는 애플리케이션의 진입점에 있어야 합니다. 이 특성을 생략하면 Windows 구성 요소가 제대로 작동하지 않을 수 있습니다. 특성이 없는 경우 애플리케이션은 Windows Forms에 지원되지 않는 다중 스레드 아파트 모델을 사용합니다.

참고 항목

Application Framework를 사용하는 Visual Basic 프로젝트는 MAIN 메서드를 STAThread로 표시할 필요가 없습니다. Visual Basic 컴파일러는 자동으로 수행합니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 진입점에 STAThreadAttribute 특성을 추가합니다. System.MTAThreadAttribute 특성이 있으면 제거합니다.

경고를 표시하지 않는 경우

STAThreadAttribute 특성이 불필요하고 지원되지 않는 .NET Compact Framework용으로 개발하는 경우 이 규칙의 경고를 표시하지 않는 것이 안전합니다.

예시

다음 예제에서는 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);
        }
    }
}