как исправить «System.AggregateException» произошел в mscorlib.dll “

Я получаю такую ​​проблему в отладчике, и программа останавливается. Отладчик не показывает мне строку, поэтому я не знаю, что исправить.

Необработанное исключение типа «System.AggregateException» произошло в файле mscorlib.dll

Дополнительная информация: Исключение (исключения) Задачи не наблюдалось ни в ожидании задачи, ни при доступе к ее свойству Exception. В результате незаметное исключение было восстановлено streamом финализатора.

Невозможно получить значение local или argument ”, поскольку оно недоступно при указании этой инструкции, возможно, потому, что оно было оптимизировано. System.Threading.Tasks.TaskExceptionHolder

Как устранить проблему?

Я также нашел этот вопрос, который довольно похож. Невозможно получить значение локального или аргумента, поскольку он недоступен при указании этой инструкции, возможно, потому, что он был оптимизирован

Как говорится в сообщении, у вас есть задача, которая бросила необработанное исключение.

Включите Break on All Exceptions (Отладка, Исключения) и запустите программу.
Это покажет вам исходное исключение, когда оно было брошено в первую очередь.


(добавлено комментарий): В VS2015 (или выше). Выберите « Отладка»> «Параметры»> «Отладка»> «Общие» и отмените выбор «Включить только мой код».

Вы можете обрабатывать исключение напрямую, чтобы оно не разбивало вашу программу (ловящее исключение AggregateException ). Вы также можете посмотреть на внутреннее исключение, это даст вам более подробное объяснение того, что пошло не так:

 try { // your code } catch (AggregateException e) { } 

Принятый ответ будет работать, если вы легко сможете воспроизвести проблему. Однако в качестве наилучшей практики вы должны поймать любые исключения (и протоколирование), которые выполняются в рамках задачи. В противном случае ваше приложение выйдет из строя, если в задаче произойдет что-то неожиданное.

 Task.Factory.StartNew(x=> throw new Exception("I didn't account for this"); ) 

Однако, если мы это сделаем, по крайней мере приложение не сработает.

 Task.Factory.StartNew(x=> try { throw new Exception("I didn't account for this"); } catch(Exception ex) { //Log ex } ) 

В моем случае я столкнулся с этой проблемой при использовании Edge.js – все это была ошибка синтаксиса JavaScript внутри определения функции C # Edge.js.