小编Ida*_*dan的帖子

SqlCeConnection中的访问冲突异常处理

申请/代码说明:

我的应用程序基于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)

.net c# dll access-violation sql-server-ce

6
推荐指数
1
解决办法
1190
查看次数

标签 统计

.net ×1

access-violation ×1

c# ×1

dll ×1

sql-server-ce ×1