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