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

本文关键字:异常 AccessViolationException 第一次 机会 System WinForms 类型 | 更新日期: 2023-09-27 17:55:22

我有一个基本的WinForms应用程序。我正在调用一个外部 API,该 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);

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

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

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

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

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

第一次机会异常并不总是错误。第一次机会异常是指您正在调试的代码首次引发异常。如果您的代码处理异常,那么这一切的作用就是通知您发生了异常。

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

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