我有下面的程序可以将文件从一个目录移动到另一个目录。以系统同步的方式,它工作正常。但我想以异步方式做到这一点。
谢谢
错误说明了一切:您无法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