private void ProcessarGravacaoArquivo() { try { this.UpdateStatusAsynchronousExecution("Iniciando gravação do arquivo"); SpedFileWriterService.Initialize(this._parameters.CaminhoArquivo); DadosArquivoPisCofinsService.OpenRegistros(); while (DadosArquivoPisCofinsService.ReadRegistro()) { // ATENÇÃO: Não atualizar o status de execução do form que invocou este // Controller, uma vez que a manipulação de arquivos tende a levar a estouros // de memória neste caso. Logo, evitar chamadas ao método "UpdateStatusAsynchronousExecution" // dentro deste loop. SpedFileWriterService.WriteLine( DadosArquivoPisCofinsService.GetConteudoRegistro()); } DadosArquivoPisCofinsService.Finalizar(); this.UpdateStatusAsynchronousExecution("Gravação em arquivo finalizada"); } finally { DadosArquivoPisCofinsService.CloseRegistros(); SpedFileWriterService.Close(); } }