Необработанное исключение из SqlCeDataReader.Finalize
У меня есть кусок кода, где мы используем класс SqlCeDatabase, как показано ниже
sqlCeDatabase.ExecuteResultSet(command, options, parameters);
Если переданная команда неверна, мы получаем исключение и обрабатываем его с помощью try-catch
Но через некоторое время из SqlCeDataReader.Finalize() выдается необработанное исключение со следующей трассировкой
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical">
<TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier>
<Description>Unhandled exception</Description>
<AppDomain>xxx.vshost.exe</AppDomain>
<Exception>
<ExceptionType>System.ArgumentNullException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType>
<Message>Value cannot be null.</Message>
<StackTrace> at System.Threading.Monitor.Enter(Object obj)
at System.Data.SqlServerCe.SqlCeDataReader.Dispose(Boolean disposing)
at System.Data.SqlServerCe.SqlCeDataReader.Finalize()</StackTrace>
<ExceptionString>System.ArgumentNullException: Value cannot be null.
at System.Threading.Monitor.Enter(Object obj)
at System.Data.SqlServerCe.SqlCeDataReader.Dispose(Boolean disposing)
at System.Data.SqlServerCe.SqlCeDataReader.Finalize()</ExceptionString>
</Exception>
</TraceRecord>
Если я закомментирую SqlCeDatabase.ExecuteResultSet, не будет необработанного исключения.
Поскольку вызов ExecuteResultSet генерирует исключение, SqlCEResultSet для удаления не существует. Я хотел бы знать, почему вызывается Finalize of DataReader, поскольку исключение было выдано до инициализации считывателя? Это известная ошибка?