gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:19:43 28 4
gpt4 key购买 nike

我正在使用 sqlite-net async 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();
}
}
}

然后更改上面Reset的访问修饰符方法为 public .

在您的应用程序代码中只需调用 <YourSQLiteAsyncConnection>.ResetConnections();在删除数据库文件之前。


再一次,在测试时,您可以在内存中创建数据库,这样您根本不必删除它。您可以通过将 DatabasePath 设置为 ":memory:" 来实现此目的.

关于c# - sqlite-net 异步 API 是否支持处置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21347825/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com