Add lock for db

pull/3405/head^2
2dust 2023-03-04 08:43:44 +08:00
parent b1eeb648a7
commit d4921535f2
3 changed files with 22 additions and 9 deletions

View File

@ -9,8 +9,9 @@ namespace v2rayN.Base
private static readonly Lazy<SqliteHelper> _instance = new(() => new());
public static SqliteHelper Instance => _instance.Value;
private string _connstr;
public SQLiteConnection _db;
public SQLiteAsyncConnection _dbAsync;
private SQLiteConnection _db;
private SQLiteAsyncConnection _dbAsync;
private static readonly object objLock = new();
public SqliteHelper()
{
@ -34,7 +35,10 @@ namespace v2rayN.Base
}
public int Replace(object model)
{
return _db.InsertOrReplace(model);
lock (objLock)
{
return _db.InsertOrReplace(model);
}
}
public async Task<int> Replacesync(object model)
{
@ -43,7 +47,10 @@ namespace v2rayN.Base
public int Update(object model)
{
return _db.Update(model);
lock (objLock)
{
return _db.Update(model);
}
}
public async Task<int> UpdateAsync(object model)
{
@ -51,12 +58,18 @@ namespace v2rayN.Base
}
public int UpdateAll(IEnumerable models)
{
return _db.UpdateAll(models);
lock (objLock)
{
return _db.UpdateAll(models);
}
}
public int Delete(object model)
{
return _db.Delete(model);
lock (objLock)
{
return _db.Delete(model);
}
}
public async Task<int> DeleteAsync(object model)
{

View File

@ -24,7 +24,7 @@ namespace v2rayN.Handler
_lstProfileEx = new(SqliteHelper.Instance.Table<ProfileExItem>());
Task.Run(async () =>
Task.Run(() =>
{
while (true)
{
@ -35,7 +35,7 @@ namespace v2rayN.Handler
var item = _lstProfileEx.FirstOrDefault(t => t.indexId == id);
if (item is not null)
{
await SqliteHelper.Instance.Replacesync(item);
SqliteHelper.Instance.Replace(item);
}
}
Thread.Sleep(1000 * 60);

View File

@ -162,7 +162,7 @@ namespace v2rayN.Handler
todayDown = 0,
dateNow = ticks
};
_ = SqliteHelper.Instance.Replacesync(_serverStatItem);
SqliteHelper.Instance.Replace(_serverStatItem);
_lstServerStat.Add(_serverStatItem);
}
}