public async Task BulkInsertAsync <TRow>(string tableName, List <TRow> rows) where TRow : class, new() { var tableLock = GetTableLock(tableName); await Utils.LockedActionAsync(tableLock, async() => { if (rows == null || !rows.Any()) { return; } var rowsString = _serializer.SerializeRows(rows); if (string.IsNullOrWhiteSpace(rowsString)) { return; } var tableFilePath = GetTableFilePath(tableName); #pragma warning disable 4014 // Fire And Forget _cacheProvider.BulkInsertAsync(tableName, rows); #pragma warning restore 4014 File.AppendAllText(tableFilePath, rowsString); }); }