다음을 통해 공유


완화: 사용자 지정 IMessageFilter.PreFilterMessage 구현

.NET Framework 4.6.1부터 .NET Framework 버전을 대상으로 하는 Windows Forms 앱에서는 IMessageFilter.PreFilterMessage 구현이 다음에 해당하는 경우 Application.FilterMessage 메서드를 호출할 때 사용자 지정 IMessageFilter.PreFilterMessage 구현이 메시지를 안전하게 필터링할 수 있습니다.

  • 다음 중 하나 또는 두 가지 모두를 수행합니다.

  • 그와 동시에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>

참고 항목