SQLite多執行緒寫鎖檔案解決方案

2021-06-09 01:37:06 字數 1194 閱讀 3994

在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。

思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作;其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待;如果沒有則直接放行,此執行緒可以獲得寫鎖。最後寫操作執行完畢時需要釋放鎖。

下面是具體的**:

view plain

copy to clipboard

print?

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

/// 

/// 用於在多執行緒訪問sqlite時防止同步寫導致鎖檔案

/// 

/// 使用方法:

/// using (sqlitewritelock sqlitelock = new sqlitewritelock(sqlite鏈結字串))

/// 

/// 

/// 預設的超時時間是1000ms

/// 

public sealed class sqlitewritelock : idisposable  

return 1000;  

}  }  

#endregion

private readonly string _connstring;  

//隱藏無參建構函式

private sqlitewritelock()   

public sqlitewritelock(string connstring)  

#region 私有方法

private

void acquirewritelock()  

}  lock (locker)  

}  private

void releasewritelock()  

}  }  #endregion

#region idisposable 成員

public

void dispose()  

#endregion

}  

希望此文有用。

SQLite多執行緒寫鎖檔案解決方案

在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...

SQLite多執行緒寫鎖檔案解決方案

在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...

SQLite多執行緒寫鎖檔案解決方案

在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...