[英]Attempted to read or write protected memory-Sql Compact and .NEt
我嘗試在兩種情況下運行應用程序:安裝了SQL Server壓縮版(3.5),沒有安裝。 未安裝SQL Server Compact版時,我收到以下錯誤:
Exception :Attempted to read or write protected memory. This is often an indication
that other memory is corrupt.
Inner Exception :
========================
Stack Trace :
========================
at System.Data.SqlServerCe.NativeMethods.CloseStore(IntPtr pSeStore)
at System.Data.SqlServerCe.SqlCeConnection.ReleaseNativeInterfaces()
at System.Data.SqlServerCe.SqlCeConnection.Dispose(Boolean disposing)
at System.Data.SqlServerCe.SqlCeConnection.Finalize()
Source :
========================
System.Data.SqlServerCe
----------------------------------------------------------
我正在使用此方法處理未處理的異常。
我從一個控制台應用程序收到此錯誤,我從Windows窗體開始。 在這兩個應用程序中,我都插入了Unhandled Exception編碼,它正在執行並返回到文本文件,並且正在生成Microsoft“報告錯誤”對話框; 我如何防止這種情況發生? 如何解決導致此問題的原因?
當我遇到這個問題時,問題是數據庫連接:
如果在重新打開之前沒有關閉連接,則會在“ System.Data.SqlServerCe
”周圍出現此錯誤。
只需添加此行即可解決我的問題:
SqlCeConnection conn = new SqlCeConnection(_connectionString);
conn.Close(); //adding this.
if(conn == ConnectionState.Open) {
//-- Your code here.
}
本機SQL Compact代碼崩潰。 這很不尋常。 並不太可能通過你的代碼引起的。 不是你可以調試的那種問題,除了機器代碼之外什么都沒有。 如果您運行任何其他進程內非托管代碼,則認為它對不穩定性負責。 寫下PC並在磁盤盤片之間拍攝是快速修復。
我自己的錯誤是由於我使用線程引起的。 檢查此鏈接
異常的間歇性質量似乎表明存在線程問題。 在這種情況下,sql ce數據庫由多個線程同時訪問:一個是SqlCeResultSet對象使用的只寫線程,另一個是LINQ查詢生成的只讀操作。
我解決了那個錯誤! 它不是真正的SqlCompact錯誤或代碼中的異常。它是GAC,因為我正在為某種目的打開另一個應用程序而該應用程序正在訪問數據庫。 當該應用程序關閉數據庫時,它顯然被從父應用程序中殺死,因此SQL COMPACT出現錯誤。 所以我,我的代碼中的一些變化,它現在正在工作! 謝謝你的所有建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.