Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nelle app Windows Form destinate alle versioni di .NET Framework a partire dal .NET Framework 4.6.1, una implementazione personalizzata IMessageFilter.PreFilterMessage può filtrare in modo sicuro i messaggi quando viene chiamato il metodo Application.FilterMessage se l'implementazione IMessageFilter.PreFilterMessage:
Esegue una o entrambe le operazioni seguenti:
Aggiunge un filtro di messaggio chiamando il AddMessageFilter metodo .
Rimuove un filtro di messaggio chiamando il RemoveMessageFilter metodo . metodo.
E pompa i messaggi chiamando il Application.DoEvents metodo .
Impatto
Questa modifica interessa solo le app Windows Form destinate alle versioni di .NET Framework a partire da .NET Framework 4.6.1.
Per le app Windows Form destinate a versioni precedenti di .NET Framework, tali implementazioni in alcuni casi generano un'eccezione IndexOutOfRangeException quando viene chiamato il Application.FilterMessage metodo
Mitigazione
Se questa modifica è indesiderata, le app destinate a .NET Framework 4.6.1 o versione successiva possono rifiutarlo esplicitamente aggiungendo l'impostazione di configurazione seguente alla<> sezione runtime del file di configurazione dell'app:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=true" />
</runtime>
Inoltre, le app destinate a versioni precedenti di .NET Framework ma sono in esecuzione in .NET Framework 4.6.1 o versione successiva possono acconsentire esplicitamente a questo comportamento aggiungendo l'impostazione di configurazione seguente alla<> sezione runtime del file di configurazione dell'app:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=false" />
</runtime>