c# – 是否支持sqlite-net异步API?

前端之家收集整理的这篇文章主要介绍了c# – 是否支持sqlite-net异步API?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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:”来实现此目的.

猜你在找的C#相关文章