public void Insert <TRow>(string tableName, TRow row) where TRow : class, new() { var tableLock = GetTableLock(tableName); Utils.LockedAction(tableLock, () => { var rowSting = _serializer.SerializeRow(row); if (string.IsNullOrWhiteSpace(rowSting)) { return; } var tableFilePath = GetTableFilePath(tableName); _cacheProvider.Insert(tableName, row); File.AppendAllText(tableFilePath, rowSting); }); }