簡體   English   中英

如何同步訪問數據庫,一次一個線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM