0

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

谢谢

4

2 回答 2

4

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

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

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

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

于 2012-06-23T08:07:47.743 回答
1

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

要支持await的方法需要返回一个Task<T>

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

于 2012-06-23T08:04:33.067 回答