当前位置: 首页 > 编程语言 > C#

'await'运算符只能用于异步lambda表达式share

时间:2023-04-11 00:31:08 C#

'await'运算符只能用于异步lambda表达式我正在使用异步/等待。但我不断收到此编译错误The'await'operatorcanonlybeusedinanasynchronouslambdaexpression.考虑使用“async”修饰符标记此lambda表达式。这是我的代码asyncTaskCopyFilesToFolder(ListfileList,IProgressprogress,CancellationTokenct){inttotalCount=fileList.Count;intprocessCount=awaitTask.Run(()=>{inttempCount=0;foreach(varfileinfileList){stringoutputFile=Path.Combine(outputPath,file);awaitCopyFileAsync(file,outputFile);//<--错误:编译错误ct.ThrowIfCancellationRequested();tempCount++;if(progress!=null){progress.Report((tempCount*100/totalCount)));}}返回临时计数;});返回进程数;}privateasyncTaskCopyFileAsync(stringsourcePath,stringdestinationPath){使用(Streamsource=File.Open(sourcePath,FileMode.Open)){使用(Streamdestination=File.Create(destinationPath)){awaitsource.CopyToAsync(destination);}}}谁能指出我在这里遗漏了什么?intprocessCount=awaitTask.Run(()=>应该是intprocessCount=awaitTask.Run(async()=>请记住,lambda只是定义方法的简写。因此,您的外部方法是异步的,但在这种情况下,您尝试在lambda内部使用await(这与您的外部方法不同)。所以你的lambda也必须被标记为异步。以上是C#学习教程:'await'运算符只能和异步lambda表达式一起使用。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: