申请/代码说明:
我的应用程序基于c#并使用SQL Server CE,并且在同一代码位置只有两次获得此异常.直到此版本才引入此例外的崩溃.此版本中唯一的变化是将.net框架更改为4.5.2.
我在处理a时遇到访问冲突异常SqlCeConnection
,出现以下错误:
尝试读取或写入受保护的内存.这通常表明其他内存已损坏.
此异常不会被.net的try catch子句拦截 - 它会导致崩溃.
在我的代码中,我使用以下命令运行
try
{
var connectionString = string.Format("{0}{1}{2}", "Data Source=", _localDB, ";File Mode=Read Write;Max Database Size=4000;Persist Security Info=False;");
using (var sqlCeConnection = new SqlCeConnection(connectionString))
{
using (var sqlCeCommand = new SqlCeCommand())
{
sqlCeCommand.Connection = sqlCeConnection;
sqlCeCommand.CommandText = "SELECT * FROM Application";
sqlCeConnection.Open();
var result = (string)sqlCeCommand.ExecuteScalar();
isValid = !IsValid(result);
}
}
}
catch (Exception ex)
{
_log.Error("exception", ex);
}
Run Code Online (Sandbox Code Playgroud)
第一次崩溃的调用堆栈:
ntdll!ZwWaitForMultipleObjects+a
KERNELBASE!WaitForMultipleObjectsEx+e8
kernel32!WaitForMultipleObjectsExImplementation+b3
kernel32!WerpReportFaultInternal+215
kernel32!WerpReportFault+77
kernel32!BasepReportFault+1f
kernel32!UnhandledExceptionFilter+1fc
ntdll! ?? …
Run Code Online (Sandbox Code Playgroud)