2011-05-09 3 views
1

기본 WinForms 응용 프로그램이 있습니다.C# WinForms 예외 : 'System.AccessViolationException'유형의 첫 번째 예외 예외

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);

난 못해 나는 다음과 같은 예외를 생성하는 외부 API를 호출을 만들고있어 문제의 징후를 발견하십시오.

+1

버그가 외부 API와 상호 작용할 수 있습니다. API에 null 참조를 전달하지 않고 내가 제공 한 정보로 얻을 수있는 조언이 많지 않습니다. – Gabe

+1

@Gabe - null 참조를 확인했습니다. 문제가 아닙니다. 나는 out-of-proc COM을 통해 써드 파티 애플리케이션과의 인터페이스와 관련이 있다고 생각하기 시작했다. – wulfgarpro

+0

'AccessViolationException'은 순전히 관리되는 코드에서 발생할 수 없으므로 문제는 타사 앱과의 인터페이스에 있어야합니다. – Gabe

답변

2

문제는 API에 의해 생성 된 것입니다. 귀하의 전화를 통해 API에 불량 데이터를 전달 중이거나 귀하의 API가 자체적으로 문제가 있습니다.

그렇지 않으면 http://msdn.microsoft.com/en-us/library/ms164911(v=vs.80).aspx

, 난 당신이 문제가 무엇인지 파악하기 위해 API 제공 업체와 함께 작동하도록해야 할 수도 있습니다 생각 : 다음은 API의 코드에 액세스 할 수 있으면 도움이 될 마이크로 소프트 링크입니다 그것을 해결하는 방법.

+0

감사합니다. 공급 업체 전자 메일이 시작되었습니다! – wulfgarpro

+0

@WulfgarPro - 재미있는 시간. 다행스럽게도 도움이 될 수 있습니다. – IAmTimCorey

0

첫 번째 예외가 항상 버그는 아닙니다. 첫 번째 예외는 디버깅중인 코드에서 예외가 처음 throw 된 경우입니다. 코드에서 예외를 처리하면 예외가 발생했음을 알리는 것입니다.

예를 들어, 특정 이름의 파일을 찾으려고 시도하는 코드가있을 수 있으며 발견 된 경우 특정 작업을 수행 할 수 있습니다. 파일 이름이 존재하지 않으면 예외가 throw됩니다.이 예외는 처리하고 다른 작업을 수행합니다. 따라서 예외가 발생하더라도 예상되는 동작이며 코드로 처리됩니다.

두 번째 예외 알림이있는 경우 코드가 실제로 throw 된 예외를 처리하지 못한다는 의미입니다. 그 시점에서, 당신은 무슨 일이 일어나고 있는지보고 싶을 것입니다. 더 높은 수준의 코드를 캡처하기 위해 예외를 다시 던지거나 완전히 무시하고 있습니까?