mirror of https://github.com/2dust/v2rayN
Add lock for db
parent
b1eeb648a7
commit
d4921535f2
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -162,7 +162,7 @@ namespace v2rayN.Handler
|
|||
todayDown = 0,
|
||||
dateNow = ticks
|
||||
};
|
||||
_ = SqliteHelper.Instance.Replacesync(_serverStatItem);
|
||||
SqliteHelper.Instance.Replace(_serverStatItem);
|
||||
_lstServerStat.Add(_serverStatItem);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue