Megoldás: Custom IMessageFilter.PreFilterMessage implementációk
A .NET-keretrendszer a .NET-keretrendszer 4.6.1-től kezdődően megcélzott Windows Forms-alkalmazásokban az egyéni IMessageFilter.PreFilterMessage implementációk biztonságosan szűrhetik az üzeneteket a Application.FilterMessage metódus meghívásakor, ha az implementáció:IMessageFilter.PreFilterMessage
Az alábbiak egyikét vagy mindkettőt elvégzi:
Üzenetszűrőt ad hozzá a AddMessageFilter metódus meghívásával.
Eltávolít egy üzenetszűrőt a RemoveMessageFilter metódus meghívásával. Módszer.
És az üzeneteket a metódus meghívásával pumpálja Application.DoEvents .
Hatás
Ez a módosítás csak a .NET-keretrendszer .NET-keretrendszer 4.6.1-től kezdődően megcélzott Windows Forms-alkalmazásokat érinti.
A .NET-keretrendszer korábbi verzióit célzó Windows Forms-alkalmazások esetében az ilyen implementációk bizonyos esetekben kivételt IndexOutOfRangeException képeznek a Application.FilterMessage metódus meghívásakor
Kockázatcsökkentés
Ha ez a módosítás nem kívánatos, a .NET-keretrendszer 4.6.1-es vagy újabb verziót megcélzott alkalmazások az alkalmazás konfigurációs fájljának futtatókörnyezeti> szakaszához hozzáadva a következő konfigurációs beállítást <választhatják ki:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=true" />
</runtime>
Emellett az .NET-keretrendszer korábbi verzióit célzó, de a .NET-keretrendszer 4.6.1-es vagy újabb verziójában futó alkalmazások az alábbi konfigurációs beállítás <hozzáadásával engedélyezhetik ezt a viselkedést az alkalmazás konfigurációs fájljának futtatókörnyezeti> szakaszában:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=false" />
</runtime>
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: