[英]How to synchronize access to a database, one thread at a time
我已經用C#開發了Windows服務,該服務從外部硬件接收事件。 對於每個收到的事件,SQLite數據庫都會創建一條記錄並保存。
問題是,有時會發生DBLock錯誤,因此我需要控制一次只能有一個線程寫入數據庫。
我創建了在Service OnStart方法中實例化的此類變量:
private DataWare.monitorEntities _db;
然后,在事件中,我有:
void driver_Transaccion(object sender, AttendanceReader.MarcacionEventArgs e)
{
lock (_db)
{
/* Code that creates a record a does some other actions */
/* ......... */
_db.SaveChanges();
}
}
問題是我繼續收到DBLock異常,因此似乎未考慮指令鎖(_db)。
有什么幫助嗎?
使用后是否要處置連接?
lock (_lockObj)
{
using (MyEntities context = new MyEntities)
{
// do stuff
context.SaveChanges();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.