private void SaveQueue() { SQLiteConnection db = new SQLiteConnection("Data Source=" + DBName + ";PRAGMA synchronous = OFF;PRAGMA page_size = 8192;PRAGMA cache_size = 4096"); db.Open(); SQLiteCommand cmd = db.CreateCommand(); object odata; struOneTiledData oneTiledDataTemp = new struOneTiledData(); while (true) { if (Buffer.Count > 0) { SQLiteTransaction Transaction = db.BeginTransaction(); while (Buffer.Count > 0) { Buffer.TryDequeue(out odata); oneTiledDataTemp = (struOneTiledData)odata; cmd.CommandText = "INSERT OR REPLACE INTO '" + oneTiledDataTemp.TableName + "' (level, row, column,tile) VALUES (@Level,@Row,@Column,@Bytes)"; //,level,row,column); cmd.Parameters.Add(new SQLiteParameter("@Level", oneTiledDataTemp.level)); cmd.Parameters.Add(new SQLiteParameter("@Row", oneTiledDataTemp.row)); cmd.Parameters.Add(new SQLiteParameter("@Column", oneTiledDataTemp.column)); cmd.Parameters.Add(new SQLiteParameter("@Bytes", oneTiledDataTemp.tile)); cmd.ExecuteNonQuery(); } Transaction.Commit(); } else { Thread.Sleep(100); } } }
/// <summary> /// /// </summary> /// <param name="level"></param> /// <param name="row"></param> /// <param name="column"></param> /// <param name="tile"></param> private void SaveOrReplaceTile(int level, int row, int column, byte[] tile) { struOneTiledData oneTile = new struOneTiledData(); oneTile.tile = tile; oneTile.level = level; oneTile.row = row; oneTile.column = column; oneTile.TableName = this.Url; Buffer.Enqueue(oneTile); }