Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        /// <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);
        }