我有C#控制台应用程序,它作为windows服务运行,并与
NT Service
账户一旦服务运行数据库文件(
sqlite
)在用户文件位置内创建
C:\Users\XXX\AppData\Local\TimeSeries.db
当我检查时,在其中一个生产服务器中
day 1
同一应用程序exe使用的文件
test.exe
同样
PID
我看到2个条目。我不知道为什么,但事情如预期和数据所示
read/write
是恰当的。
之后
few days run
我开始变得
TimeSeries.db
文件锁定问题和
读/写
不起作用,此时
3
具有相同PID的相同服务的条目
1736
.
问题是为什么它又增加了一个条目,但服务只运行了一个实例,并且由于这个文件锁定发生了。为什么以及如何解决这个问题。
注意-不是所有生产服务器都有这个问题?在这里,服务器出现的问题是一个具有多核心的大型服务器。
密码
public class LiteContext
{
public LiteDatabase Database { get; }
public LiteContext()
{
Database = new LiteDatabase("TimeSeries.db");
}
}
public class LiteDbResultWrite
{
private readonly LiteDatabase _liteDb;
public LiteDbResultPacketService(LiteContext liteContext)
{
_liteDb = liteContext.Database;
}
public Task<Guid> Insert(Result result)
{
try
{
var liteCollection = _liteDb.GetCollection<Result>("Result");
return Task.FromResult(liteCollection.Insert(result).AsGuid);
}
catch (Exception exception)
{
return Task.FromResult(new Guid());
}
}
}
我想我失踪了
IDisposable
对于
LiteDbResultWrite
? 这是正确的吗?