【发布时间】:2015-07-06 04:29:18
【问题描述】:
我有一个奇怪的错误导致我的应用程序崩溃。它仅在通过单击一次编译和安装时发生,而不是在 Visual Studio 中调试时发生。
查看事件日志给了我这个:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Windows Error Reporting" />
<EventID Qualifiers="0">1001</EventID>
<Level>4</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2015-04-27T14:51:30.000000000Z" />
<EventRecordID>6471</EventRecordID>
<Channel>Application</Channel>
<Computer>me.local</Computer>
<Security />
</System>
- <EventData>
<Data />
<Data>0</Data>
<Data>CLR20r3</Data>
<Data>Not available</Data>
<Data>0</Data>
<Data>calibration certificate builder</Data>
<Data>1.0.0.0</Data>
<Data>553e4aaa</Data>
<Data>System.Data.SqlServerCe</Data>
<Data>3.5.8080.0</Data>
<Data>4b743b2d</Data>
<Data>e3</Data>
<Data>0</Data>
<Data>System.ArgumentNullException</Data>
<Data />
<Data>C:\Users\me\AppData\Local\Temp\WER80E0.tmp.WERInternalMetadata.xml</Data>
<Data>C:\Users\me\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_pick_cert_e053eebdc3d787d726058a9b0d3405c6f279444_3b258dcb</Data>
<Data />
<Data>0</Data>
<Data>e12fbed6-ecec-11e4-b276-24fd52358985</Data>
<Data>65</Data>
</EventData>
</Event>
我不确定如何处理。我查看了我的代码,那里似乎没有问题。它似乎确实在某处的 SQL Server CE 代码中,但我一直找不到它。
我还将event.ExceptionObject 字符串推送到一个文本文件并得到了这个:
System.ArgumentNullException:值不能为空。 在 System.Threading.Monitor.Enter(对象 obj) 在 System.Data.SqlServerCe.SqlCeCommand.Dispose(布尔处理) 在 System.Data.SqlServerCe.SqlCeCommand.Finalize()
谁能帮我解释一下?
我已从其他线程中删除了对 SQL CE 服务的使用。我还删除了 SQL CE 连接的处理以及 finally 块,但错误日志保持不变。
连接的处置是否会导致问题?
【问题讨论】:
-
可能不直接相关,但是:您正在通过它们的终结器处理您的 SQL 命令(以及可能的其他资源,例如 SQLCeConnection),而不是将它们放在
using块中并处理它们当你完成了他们。我还会检查您安装的应用程序的路径等配置,最后,我怀疑您使用的是try { .... } catch { /* do nothing, not even log the error */ }模式。 -
是的,我正在这样做并使用 try/catch 模式。我也会看看连接的处理。谢谢。
-
你不能跨线程共享命令和连接对象
-
@ErikEJ 我不知道我在这样做吗?你能详细说明一下吗?
-
你能在你的问题中显示一些代码吗?我们可以猜测你在做什么,但看到会有很大帮助。
标签: vb.net visual-studio error-handling sql-server-ce microsoft-sync-framework