无法在 C#5.0 中正确应用等待和异步



我有下面的程序可以将文件从一个目录移动到另一个目录。以系统同步的方式,它工作正常。但我想以异步方式做到这一点。

谢谢

错误说明了一切:您无法await void的东西。您只能await Task s 和看起来与 Task s 相似的事物(例如 YieldAwaitable,这是由Task.Yield()返回的)。但你肯定不能await void.

似乎没有办法在 .Net 4.5 中异步移动文件。

你能做的最好的事情就是使用 await Task.Run(() => fileinfo.MoveTo(target)) 之类的东西,它仍然会阻塞线程,但不会阻塞当前线程(如果您在 UI 线程上,可能会很有用)。

或者,您也可以使用 Stream s(可以是异步的)自行复制文件,然后删除原始文件。

仅当您调用的方法支持时,才能使用 await。

若要支持await方法需要返回Task<T>

在这种情况下,fileInfo.MoveTo不会返回Task

最新更新