C # Исключение WinForms: исключение первого шанса типа «System.AccessViolationException» - PullRequest
1 голос
/ 09 мая 2011

У меня есть базовое приложение WinForms.Я звоню во внешний API, который генерирует следующее исключение:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

A first chance exception of type 'System.AccessViolationException' occurred in UavController.exe

Вызов выглядит так:

outputBroker.SelectedObjectPaths.AddWithID(((AgAircraft)aircraft).Path, ((AgAircraft)aircraft).InstanceName);

Не могу найти никаких признаков проблемы.

Ответы [ 3 ]

2 голосов
/ 09 мая 2011

Проблема связана с вашим API.Либо вы передаете неверные данные в API через ваш вызов, либо у вашего API есть проблема самостоятельно.Вот ссылка Microsoft, которая может помочь вам, если у вас есть доступ к коду вашего API:

http://msdn.microsoft.com/en-us/library/ms164911(v=vs.80).aspx

В противном случае, я думаю, вам, возможно, придется поработать с вашим провайдером API, чтобы понятьчто это за проблема и как ее решить.

0 голосов
/ 24 сентября 2013

Поместите это в свой конструктор в качестве первой строки ... Это закрыто исправить это:)

InitializeComponent();
0 голосов
/ 06 апреля 2013

Исключение из первого шанса не всегда является ошибкой. Первое случайное исключение - это первый случай, когда исключение было вызвано кодом, который вы отлаживаете. Если ваш код обрабатывает исключение, то все, что нужно сделать, это уведомить вас о возникновении исключения.

Например, у меня может быть код, который пытается найти файл с определенным именем и, если найден, выполняет определенные действия. Если имя файла не существует, исключение - throw, которое я обрабатываю и предпринимаю другие действия. Таким образом, хотя возникает исключение, оно является ожидаемым поведением и обрабатывается кодом.

Если у вас есть уведомления об исключениях второго шанса, это означает, что ваш код на самом деле не обрабатывает возникшее исключение. В этот момент вы бы хотели посмотреть, что происходит. Вы просто повторно вызываете исключение для кода более высокого уровня для захвата или вы полностью его игнорируете.

...