private void ProcessChunk(IFileImportEntitiesChunkProcessor chunkProcessor, ImportParameters importParameters, ImportDataChunk <EntityChunkData> chunk) { EventHandler <ImportEntitySavedEventArgs> successImportEntitySavedHadler = (o, arg) => { chunk.Data.SuccessProcessedEntityCount++; _importEntitiesChunksDataProvider.SaveProcessedRow(chunk.ChunkId, (int)arg.RowIndex); }; chunkProcessor.ImportEntitySaved += successImportEntitySavedHadler; EventHandler <ImportEntitySaveErrorEventArgs> importEntitySavedWithErrorHandler = (o, arg) => { chunk.Data.ProcessedWithErrorEntityCount++; _importEntitiesChunksDataProvider.SaveProcessedRow(chunk.ChunkId, (int)arg.ImportEntity.RowIndex, false); }; chunkProcessor.ImportEntitySaveError += importEntitySavedWithErrorHandler; ImportParameters newImportParameters = PrepareImportParameters(importParameters, chunk); SaveProcessedChunk(chunk, ImportChunkState.InProcess); chunkProcessor.ProcessChunk(newImportParameters); SaveProcessedChunk(chunk, ImportChunkState.Processed); _importEntitiesChunksDataProvider.RemoveProcessedRows(chunk.ChunkId); chunkProcessor.ImportEntitySaved -= successImportEntitySavedHadler; chunkProcessor.ImportEntitySaveError -= importEntitySavedWithErrorHandler; }