在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。
思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作;其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待;如果沒有則直接放行,此執行緒可以獲得寫鎖。最後寫操作執行完畢時需要釋放鎖。
下面是具體的**:
//////
用於在多執行緒訪問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,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...