public async Task Write(Stream fileStream) { string wavIntermediate = Path.Combine(outputDirectoryProvider.GetOutputDirectory(), Guid.NewGuid() + ".wav"); try { { await waveStream.Write(wavIntermediate); await progressReporter.ReportProgress(0.97, JobProgressStatus.InProgress, "Converting WAV to MP3"); await using var audioFileReader = new AudioFileReader(wavIntermediate); await using var writer = new LameMP3FileWriter(fileStream, audioFileReader.WaveFormat, LAMEPreset.ABR_320); await audioFileReader.CopyToAsync(writer); } // dispose it before reporting complete await progressReporter.ReportProgress(1, JobProgressStatus.Complete, "File created successfully"); } finally { if (File.Exists(wavIntermediate)) { try { File.Delete(wavIntermediate); } catch (Exception) { } } } }