C#WinForms异常:类型为'的第一次机会异常;System.AccessViolationException';

C#WinForms异常:类型为'的第一次机会异常;System.AccessViolationException';,c#,.net,exception,access-violation,C#,.net,Exception,Access Violation,我有一个基本的WinForms应用程序。我正在调用一个外部API,该API生成以下异常: 尝试读取或写入受保护内存。这通常表示其他内存已损坏。 UavController.exe中发生了类型为“System.AccessViolationException”的第一次意外异常 该呼叫如下所示: outputBroker.SelectedObjectPath.AddWithID(((AgAircraft)aircraft.Path,((AgAircraft)aircraft.InstanceName

我有一个基本的WinForms应用程序。我正在调用一个外部API,该API生成以下异常:

尝试读取或写入受保护内存。这通常表示其他内存已损坏。

UavController.exe中发生了类型为“System.AccessViolationException”的第一次意外异常

该呼叫如下所示:

outputBroker.SelectedObjectPath.AddWithID(((AgAircraft)aircraft.Path,((AgAircraft)aircraft.InstanceName)


我找不到该问题的任何迹象。

该问题是由您的API生成的。要么是通过调用将坏数据传递给API,要么是API本身存在问题。如果您有权访问API的代码,以下Microsoft链接可能会对您有所帮助:


否则,我认为您可能需要与API提供商合作,找出问题所在以及解决方法。

第一次出现异常并不总是错误。第一次机会异常是您正在调试的代码第一次引发异常。如果您的代码处理异常,那么所做的就是通知您发生了异常

例如,我可能有一些代码试图找到一个具有特定名称的文件,如果找到,则执行某些操作。如果文件名不存在,则抛出一个异常,由我处理并执行其他操作。因此,尽管发生异常,但它是预期的行为,并由代码处理


如果您有第二次机会的异常通知,这意味着您的代码实际上不会处理抛出的异常。在这一点上,你会想看看发生了什么。您只是再次抛出异常以供更高级别的代码捕获,还是完全忽略它。

该错误存在于您与外部API的交互中。除了确保您没有向API传递任何空引用之外,对于您提供的信息,我没有太多建议。@Gabe-检查空引用-不是问题。我开始认为这与我通过out-of-proc COM与第三方应用程序的接口有关。纯粹的托管代码不可能出现
AccessViolationException
,因此问题必须在与第三方应用程序的接口上。out-of-proc COM听起来很可能会出现此错误。我首先检查您何时调用任何COM方法,并确保传递的参数正确无误correct@WulfgarPro-快乐时光。很高兴我能帮上忙。