異常System.AccessViolationException的處理方式


 最近用FFmpeg處理視頻, 提示“”當代碼嘗試讀取或寫入無法訪問的內存“”,然后程序退出。已經設置全局異常也沒有捕獲到。

 C#調用非托管方法程序容易奔潰,原因是非退托管代碼報的異常未能被捕獲到。 

記錄一下兩種解決方法: 

一、使用配置文件兼容以前代碼

    為了與舊代碼兼容,在app.config添加legacyCorruptedStateExceptionsPolicy元素。 

   同樣代碼在.Net2.0下面正常,4.0程序就退出 。

App.config:

<?xml version="1.0"?>
<configuration>
 <startup>
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
 </startup>
    <runtime>
      <legacyCorruptedStateExceptionsPolicy enabled="true" />
    </runtime>
</configuration>

  

二、方法添加特性

方法上面添加這個特性 [System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions] 

try catch就可以捕捉AccessViolationException異常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM