Delen via


Fout: Het beoogde proces werd beëindigd met code 'code' tijdens het evalueren van de functie 'functie'

Volledige berichttekst: Het doelproces is afgesloten met code 'code' tijdens het evalueren van de functie 'functie'.

Om het gemakkelijker te maken om de status van .NET-objecten te inspecteren, dwingt het foutopsporingsprogramma het foutopsporingsproces automatisch af om andere code uit te voeren (meestal eigenschap getter-methoden en ToString -functies). In de meeste scenario's worden deze functies succesvol voltooid of worden er uitzonderingen gegenereerd die kunnen worden opgevangen door het foutopsporingsprogramma. Er zijn echter enkele omstandigheden waarin uitzonderingen niet kunnen worden afgevangen omdat ze kernelgrenzen overschrijden, gebruikersberichten gepomp moeten worden of onherstelbaar zijn. Als gevolg hiervan voert een eigenschapsgetter- of ToString-methode code uit die het proces expliciet beëindigt (bijvoorbeeld door het aanroepen van ExitProcess()) of een niet-verwerkte uitzondering opwerpt die niet kan worden opgevangen (bijvoorbeeld StackOverflowException), wat het foutopsporingsproces beëindigt en de foutopsporingssessie afsluit. Als u dit foutbericht krijgt, is dit opgetreden.

Een veelvoorkomende reden voor dit probleem is dat wanneer het foutopsporingsprogramma een eigenschap evalueert die zichzelf aanroept, dit kan resulteren in een stack-overloopuitzondering. De stack-overloop-uitzondering kan niet worden hersteld en het doelproces wordt beëindigd.

Deze fout corrigeren

Er zijn twee mogelijke oplossingen voor dit probleem.

Oplossing 1: Voorkomen dat het foutopsporingsprogramma de getter eigenschap of ToString-methode aanroept

In het foutbericht wordt de naam weergegeven van de functie die het foutopsporingsprogramma heeft geprobeerd aan te roepen. Met de naam van de functie kunt u proberen die functie opnieuw te evalueren vanuit het venster Direct om fouten in de evaluatie op te sporen. Foutopsporing is mogelijk bij evalueren vanuit het venster Direct, omdat het foutopsporingsprogramma, in tegenstelling tot impliciete evaluaties van de vensters Autos/Locals/Watch, onderbreekt bij niet-verwerkte uitzonderingen.

Als u deze functie kunt wijzigen, kunt u voorkomen dat het foutopsporingsprogramma de getter of ToString methode van de eigenschap aanroept. Voer een van de volgende handelingen uit:

  • Wijzig de methode in een ander type code dan een getter- of ToString-methode en het probleem wordt opgelost.

    – of –

  • (Voor ToString) Definieer een DebuggerDisplay kenmerk voor het type en u kunt het foutopsporingsprogramma iets anders laten evalueren dan ToString.

    – of –

  • (Voor een eigenschapstoegangsfunctie) Plaats het [System.Diagnostics.DebuggerBrowsable(DebuggerBrowsableState.Never)] attribuut op de eigenschap. Dit kan handig zijn als u een methode hebt die een eigenschap moet blijven om api-compatibiliteitsredenen, maar dit moet echt een methode zijn.

Als u deze methode niet kunt wijzigen, kunt u het doelproces mogelijk verbreken in een alternatieve instructie en de evaluatie opnieuw proberen.

Oplossing 2: Alle impliciete evaluatie uitschakelen

Als de vorige oplossingen het probleem niet oplossen, kunt u de functie Eigenschapsevaluatie inschakelen uitschakelen.

Open het deelvenster Hulpmiddelen>Opties en vouw de sectie Alle instellingen>Debuggen>Algemeen uit. Schakel het selectievakje Eigenschapsevaluatie inschakelen en andere impliciete functie-aanroepen uit.

Open het dialoogvenster Extra>Opties en vouw de sectie Foutopsporing>Algemeen uit. Schakel het selectievakje Eigenschapsevaluatie inschakelen en andere impliciete functie-aanroepen uit.

Met deze wijziging worden de meeste impliciete functie-evaluaties uitgeschakeld en moet het probleem worden opgelost.