在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,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...