我有以下程序,它将文件从一个目录移动到另一个目录。以同步方式,它工作正常。但我想以异步方式来做。
谢谢
错误说明了一切:你不能await
是void
. 您只能await
Task
s 和看起来与Task
s 相似的东西(例如YieldAwaitable
,由 s 返回的Task.Yield()
)。但你肯定不能await
void
。
似乎没有办法在 .Net 4.5 中异步移动文件。
您可以做的最好的事情是使用类似的东西await Task.Run(() => fileinfo.MoveTo(target))
,它仍然会阻塞线程,但不会阻塞当前线程(如果您在 UI 线程上可能会很有用)。
或者,您也可以使用Stream
s(可以是异步的)自己复制文件,然后删除原始文件。
只有当您调用的方法支持它时,您才能使用 await。
要支持await
的方法需要返回一个Task<T>
在这种情况下,fileInfo.MoveTo
不返回Task