soh*_*hum 12 .net c# sqlite asynchronous windows-phone-8
我正在使用sqlite-net异步API来编写Windows Phone应用程序.在编写单元测试以确保我的sqlite-net API适配器正确创建文件时,我注意到适配器继续保持文件句柄,即使它已经超出范围.
异步连接类(SQLiteAsyncConnection)不支持,IDisposable所以我不能手动处理它.查看源代码,似乎异步API创建了一个连接,使用它并每次都处理它.但是,当我的测试清理代码尝试删除创建的测试数据库时,其他一些资源仍然保留在其上.
如果数据库应该通过电子邮件发送用于调试/分析目的,我遇到了完全相同的问题。没有办法做到这一点,因为连接已被保持。
您可以通过稍微修改 sqlite-net 实现来解决这个问题。
SQLiteAsync.cs在添加以下部分类声明之上。
namespace SQLite
{
public partial class SQLiteAsyncConnection
{
public void ResetConnections()
{
SQLiteConnectionPool.Shared.Reset();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后将上述Reset方法的访问修饰符更改为public。
在您的应用程序代码中,只需<YourSQLiteAsyncConnection>.ResetConnections();在删除数据库文件之前调用即可。
话又说回来,在测试时,您可以在内存中创建数据库,这样您就根本不必删除它。您可以通过将 DatabasePath 设置为 来实现此目的":memory:"。
| 归档时间: |
|
| 查看次数: |
1451 次 |
| 最近记录: |