2012-06-25 14 views
8

W moim programie tworzę dynamiczne wyrażenia lambda, a następnie kompiluję je dla delegatów. Delegaci ci są następnie wywoływani w celu wyodrębnienia informacji z moich podmiotów. Niektórzy z delegatów mogą zgłaszać wyjątki, przyjąłem wyjątek, gdy dzwonię do delegata. Włączyłem opcję "Włącz tylko mój kod" i zastosowałem atrybut [DebuggerNonUserCode] do miejsca, w którym tworzona jest LambdaExpression, gdzie została skompilowana i gdzie jest wywoływana. Ale ponieważ w sekcji Debug> Exceptions> Wyjątki dla środowiska wykonawczego języka wspólnego zaznaczono pole wyboru Thrown, studio graficzne zawsze zatrzymuje się na błędzie, co jest poważną niedogodnością dla programistów.Zapobieganie zatrzymywaniu się debuggera w wyjątku w skompilowanej LambdaExpression

Wygląda na to, że [DebuggerNonUserCode] powinien jakoś zostać zastosowany do skompilowanego uczestnika, ale jak? Lub jakiejkolwiek innej sugestii?

Dzięki.

+2

Czy to nie zatrzymuje się na wyjątku pierwszej zmiany? Można je wyłączyć osobno. – CodingBarfield

+0

Nie, zawsze zatrzymuje się przy błędzie, a nie tylko za pierwszym razem. – Alireza

+1

Czy na pewno wyjątek jest gdzieś przechwytywany. Jeśli istnieją nieklasowane wyjątki, które spowodowałyby awarię aplikacji, Visual Studio zawsze wyświetla komunikat o wyjątku. – CodingBarfield

Odpowiedz

1

O ile mi wiadomo, nie można stosować atrybutów do anonimowych metod generowanych za pomocą wyrażeń, poza ewentualnymi okropnymi zakłóceniami generowania dynamicznego.

Jednak możliwą sugestią jest przejście do menu wyjątków pod numerem Debug > Exceptions i wybranie, które wyjątki mają zostać rozdzielone. Jeśli wyrażenia mają tendencję do zgłaszania wyjątków określonych rodzajów, można po prostu wyłączyć łamanie tych wyjątków.

+1

Cóż ... Być może będę skłonny podjąć te okropne kroki. Jakieś wskazówki do właściwego zasobu? Dzięki – Alireza

Powiązane problemy