Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Texto completo da mensagem: A avaliação da função 'function' excedeu o tempo limite e teve que ser interrompida de maneira insegura. O problema pode causar dano à integridade do processo de destino.
Para facilitar a inspeção do estado dos objetos .NET, o depurador forçará automaticamente o processo depurado a executar código adicional (normalmente métodos getter de propriedade e funções ToString). Na maioria dos cenários, essas funções são concluídas rapidamente e facilitam a depuração. No entanto, o depurador não executa o aplicativo em um sandbox. Como resultado, um acessador de propriedade ou um método ToString que chama uma função nativa que deixa de responder pode levar a longos tempos de espera que podem não ser recuperáveis. Se você encontrar essa mensagem de erro, isso ocorreu.
Um motivo comum para esse problema é que, quando o depurador avalia uma propriedade, ele só permite que o thread que está sendo inspecionado seja executado. Portanto, se a propriedade estiver aguardando que outros threads sejam executados dentro do aplicativo depurado e se estiver aguardando de uma maneira que o Runtime do .NET não seja capaz de interromper, esse problema ocorrerá.
Para corrigir este erro
Consulte as seções a seguir para obter várias soluções possíveis para esse problema.
Solução nº 1: impedir que o depurador chame a propriedade getter ou o método ToString
A mensagem de erro informa o nome da função que o depurador tentou chamar. Se você puder modificar essa função, poderá impedir que o depurador chame o acessador de propriedade ou o método ToString(). Experimente um dos seguintes procedimentos:
Altere o método para algum outro tipo de código além de um método de propriedade getter ou ToString e o problema desaparecerá.
- ou -
(Para ToString) Defina um atributo DebuggerDisplay no tipo e você pode fazer com que o depurador avalie algo diferente de ToString.
- ou -
(Para um acessador de propriedade) Coloque o atributo System.Diagnostics.DebuggerBrowsable(DebuggerBrowsableState.Never) na propriedade. Isso pode ser útil se você tiver um método que precise permanecer uma propriedade por motivos de compatibilidade de API, mas ele realmente deve ser um método.
Solução nº 2: fazer com que o código alvo peça ao depurador para interromper a avaliação
A mensagem de erro informa o nome da função que o depurador tentou chamar. Se o acessador de propriedade ou o método ToString às vezes não funcionarem corretamente, especialmente em situações em que o problema é que o código precisa de outro thread, a função de implementação pode chamar System.Diagnostics.Debugger.NotifyOfCrossThreadDependency para pedir ao depurador para cancelar a avaliação da função. Com essa solução, ainda é possível avaliar explicitamente essas funções, mas o comportamento padrão é que a execução é interrompida quando ocorre a chamada NotifyOfCrossThreadDependency.
Solução nº 3: Desabilitar toda a avaliação implícita
Se as soluções anteriores não corrigirem o problema, você poderá desabilitar a opção Habilitar avaliação de propriedade e outras chamadas de função implícitas . Essa configuração desabilita a maioria das avaliações de função implícitas e deve resolver o problema.
No painel Ferramentas>Opções, expanda a seção Todas as Configurações>Depuração>Geral e desmarque a opção Habilitar avaliação de propriedade e outras chamadas de função implícitas.
Na caixa de diálogo Ferramentas>Opções, expanda a seção Depuração>Geral e desmarque a caixa de seleção Habilitar avaliação de propriedade e outras chamadas de função implícitas.
Solução nº 4: verificar a compatibilidade com ferramentas de desenvolvedor de terceiros
Se você estiver usando o Resharper, consulte esse problema para obter sugestões.