El operador ‘await’ solo se puede usar con una expresión lambda asíncrona

Estoy tratando de copiar una lista de archivos a un directorio. Estoy usando async / await. Pero he estado recibiendo este error de comstackción

El operador ‘await’ solo se puede utilizar dentro de una expresión lambda asíncrona. Considere marcar esta expresión lambda con el modificador ‘async’.

Así es como se ve mi código

async Task CopyFilesToFolder(List fileList, IProgress progress, CancellationToken ct) { int totalCount = fileList.Count; int processCount = await Task.Run(() => { int tempCount = 0; foreach (var file in fileList) { string outputFile = Path.Combine(outputPath, file); await CopyFileAsync(file, outputFile); //<-- ERROR: Compilation Error ct.ThrowIfCancellationRequested(); tempCount++; if (progress != null) { progress.Report((tempCount * 100 / totalCount))); } } return tempCount; }); return processCount; } private async Task CopyFileAsync(string sourcePath, string destinationPath) { using (Stream source = File.Open(sourcePath, FileMode.Open)) { using (Stream destination = File.Create(destinationPath)) { await source.CopyToAsync(destination); } } } 

Por favor, ¿alguien puede señalar lo que me estoy perdiendo aquí?

 int processCount = await Task.Run(() => 

Debiera ser

 int processCount = await Task.Run(async () => 

Recuerde que una lambda es una abreviatura para definir un método . Por lo tanto, su método externo es async , pero en este caso, está tratando de utilizar await dentro de un lambda (que es un método diferente al método externo). Así que tu lambda también debe estar marcada como async .