Visual Studio:ContextSwitchDeadlock

Visual Studio:ContextSwitchDeadlock

Il ContextSwitchDeadlock non significa necessariamente che il tuo codice abbia un problema, solo che c'è un potenziale. Se vai a Debug > Exceptions nel menu ed espandi il Managed Debugging Assistants , troverai ContextSwitchDeadlock è abilitato. Se lo disabiliti, VS non ti avviserà più quando gli elementi impiegano molto tempo per l'elaborazione. In alcuni casi potresti avere validamente un'operazione di lunga durata. È anche utile se stai eseguendo il debug e ti sei fermato su una linea durante l'elaborazione:non vuoi che si lamenti prima di aver avuto la possibilità di approfondire un problema.


In Visual Studio 2017, deseleziona l'opzione ContextSwitchDeadlock da:

Debug> Windows> Impostazioni eccezioni

In Windows con impostazioni di eccezione:deseleziona l'opzione ContextSwitchDeadlock


Come ha detto Pedro, hai un problema con il debugger che impedisce il message pump se stai eseguendo il codice.

Ma se stai eseguendo un'operazione di lunga durata sul thread dell'interfaccia utente, chiama Application.DoEvents() che pompa in modo esplicito la coda di messaggi e quindi restituisce il controllo al metodo corrente.

Tuttavia, se lo stai facendo, ti consiglio di guardare il tuo design in modo da poter eseguire l'elaborazione fuori dal thread dell'interfaccia utente in modo che l'interfaccia utente rimanga bella e scattante.