加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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:”来实现此目的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读