Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Texto da mensagem completa: A avaliação da função 'função' excedeu o tempo limite e precisou ser abortada de maneira não segura. O problema pode causar a danificação do processo alvo.
Para facilitar a inspeção do estado de objetos .NET, o depurador forçará automaticamente o processo em depuração a executar outro código (normalmente métodos acessores 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 a aplicação em um sandbox. Como resultado, um getter de propriedade ou método ToString que chama uma função nativa que para de responder pode levar a longos tempos limite que podem não ser recuperáveis. Se você encontrar essa mensagem de erro, isso ocorreu.
Uma razão 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 em outros threads para ser executada dentro do aplicativo depurado e se estiver aguardando de uma forma que o .NET Runtime não seja capaz de interromper, esse problema acontecerá.
Para corrigir este erro
Consulte as seções a seguir para obter várias soluções possíveis para esse problema.
Solução #1: Impedir que o depurador chame a propriedade getter ou o método ToString
A mensagem de erro indica o nome da função que o depurador tentou chamar. Se você puder modificar essa função, poderá impedir que o depurador chame a propriedade getter ou o método ToString. Tente uma das seguintes opções:
Altere o método para algum outro tipo de código, além de um acessador de propriedade ou do método 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 comprador de propriedade) Coloque o atributo System.Diagnostics.DebuggerBrowsable(DebuggerBrowsableState.Never) na propriedade. Isso pode ser útil se você tiver um método que precisa permanecer uma propriedade por motivos de compatibilidade de API, mas deve realmente ser um método.
Solução #2: Faça com que o código de destino instrua o depurador a interromper a avaliação
A mensagem de erro indica o nome da função que o depurador tentou chamar. Se o acessador de propriedade ou o método ToString às vezes não forem executados corretamente, especialmente em situações onde o código necessita que outro thread seja executado, a função implementada pode chamar System.Diagnostics.Debugger.NotifyOfCrossThreadDependency para pedir ao depurador que aborte 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 para quando ocorre a chamada NotifyOfCrossThreadDependency.
Solução #3: Desative toda a avaliação implícita
Se as soluções anteriores não corrigirem o problema, você poderá desativar a opção Habilitar avaliação de propriedades e outras chamadas de função implícitas . Esta configuração desativa a maioria das avaliações de função implícitas e deve resolver o problema.
No painel Ferramentas>, expanda a seção Todas as Configurações>> e desmarque a caixa de seleção Ativar avaliação de propriedades e outras chamadas de função implícitas.
Na caixa Ferramentas>Opções, expanda a seção Depuração>Geral, e desmarque a caixa de seleção Habilitar avaliação de propriedades e outras chamadas de função implícitas.
Solução #4: Verifique a compatibilidade com ferramentas de desenvolvedor de terceiros
Se você estiver usando o Resharper, consulte este problema para obter sugestões.