private void writeContents() { OnProgressMaxChanged(new ProgressMaxArgs(RowCount)); if (lua.SpecialCase) { switch (lua.Case) { case SpecialCase.DOUBLE_LOOP: int pVal = 0; for (int rowIdx = 0; rowIdx < RowCount; rowIdx++) { Row row = rows[rowIdx]; int cVal = (int)row.GetValueByFlag(FlagType.LOOP_COUNTER); if (pVal != cVal) { string counterName = row.GetNameByFlag(FlagType.LOOP_COUNTER); Row[] treeRows = FindAll(counterName, cVal); sHelper.WriteInt32(treeRows.Length); for (int tR = 0; tR < treeRows.Length; tR++) { if (lua.UseRowProcessor) { lua.CallRowProcessor("write", rows[tR], rowIdx); } writeRow(treeRows[tR], SenderType.WRITE_ROW); } pVal = cVal; } } break; } } else { for (int r = 0; r < RowCount; r++) { Row i = rows[r]; Row o = new Row(row_Template); if (lua.UseRowProcessor) { i.Clone(ref o); lua.CallRowProcessor(FileMode.Write, o, r); } else { o = i; } writeRow(o, SenderType.WRITE_ROW); if ((r * 100 / RowCount) != ((r - 1) * 100 / RowCount)) { OnProgressValueChanged(new ProgressValueArgs(r)); } } } OnMessageOccured(new MessageArgs(string.Format("Writing {0}", RdbPath))); sHelper.WriteToFile(RdbPath); OnProgressMaxChanged(new ProgressMaxArgs(100)); OnProgressValueChanged(new ProgressValueArgs(0)); }