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);
}
}
}
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기