완화: 사용자 지정 IMessageFilter.PreFilterMessage 구현
.NET Framework 4.6.1부터 .NET Framework 버전을 대상으로 하는 Windows Forms 앱에서는 IMessageFilter.PreFilterMessage 구현이 다음에 해당하는 경우 Application.FilterMessage 메서드를 호출할 때 사용자 지정 IMessageFilter.PreFilterMessage 구현이 메시지를 안전하게 필터링할 수 있습니다.
다음 중 하나 또는 두 가지 모두를 수행합니다.
AddMessageFilter 메서드를 호출하여 메시지 필터 추가
RemoveMessageFilter 메서드를 호출하여 메시지 필터 제거 메서드를 재정의합니다.
그와 동시에Application.DoEvents 메서드를 호출하여 메시지를 펌핑하는 경우
영향
이 변경은 .NET Framework 4.6.1부터 .NET Framework 버전을 대상으로 하는 Windows Forms 앱에만 영향을 줍니다.
이전 버전의 .NET Framework를 대상으로 하는 Windows Forms 앱에서는 경우에 따라 Application.FilterMessage 메서드를 호출할 때 이러한 구현이 IndexOutOfRangeException 예외를 throw할 수 있습니다.
완화
이러한 변경을 원치 않는 경우 .NET Framework 4.6.1 이상 버전을 대상으로 하는 앱은 앱 구성 파일의 <runtime> 섹션에 다음 구성 설정을 추가하여 이 동작을 사용하지 않을 수 있습니다.
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=true" />
</runtime>
또한 이전 버전의 .NET Framework를 대상으로 하지만 .NET Framework 4.6.1 이상 버전에서 실행되는 앱은 앱 구성 파일의 <runtime> 섹션에 다음 구성 설정을 추가하여 이 동작을 옵트인(opt in)할 수 있습니다.
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=false" />
</runtime>
참고 항목
.NET