c# – 是否支持sqlite-net异步API?
发布时间:2020-12-15 06:42:07 所属栏目:百科 来源:网络整理
导读:我正在使用sqlite-net async API来编写 Windows Phone应用程序.在编写单元测试以确保我的适配器到sqlite-net API正确创建文件时,我注意到适配器继续保持在文件句柄上,即使超出范围. 异步连接类(SQLiteAsyncConnection)不支持IDisposable,因此我无法手动处理
我正在使用sqlite-net async API来编写
Windows Phone应用程序.在编写单元测试以确保我的适配器到sqlite-net API正确创建文件时,我注意到适配器继续保持在文件句柄上,即使超出范围.
异步连接类(SQLiteAsyncConnection)不支持IDisposable,因此我无法手动处理它.看源码,似乎async API创建一个连接,使用它并且每次都处理它.但是,当我的测试清理代码尝试删除创建的测试数据库时,其他资源仍然保留在其上. 解决方法
如果数据库应该通过电子邮件发送以进行调试/分析,我有完全相同的问题.没有办法这样做,因为连接被保持.
你可以通过修改sqlite-net实现来解决这个问题. 在SQLiteAsync.cs之上添加以下部分类声明. namespace SQLite { public partial class SQLiteAsyncConnection { public void ResetConnections() { SQLiteConnectionPool.Shared.Reset(); } } } 然后将上述Reset方法的访问修饰符更改为public. 在您的应用程序代码中,只需调用< YourSQLiteAsyncConnection> .ResetConnections();删除DB文件之前. 然后,再次测试时,您可以在内存中创建数据库,所以您根本不必删除它.您可以通过将DatabasePath设置为“:memory:”来实现此目的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |