我有以下程序将文件从一个目录移动到另一个目录。以同步方式,它工作正常。但我想以异步方式。
由于
答案 0 :(得分:4)
错误说明了一切:你不能await
void
。您只能await
Task
以及与Task
类似的内容(例如YieldAwaitable
,Task.Yield()
返回的内容)。但你肯定不能await
void
。
似乎没有办法在.Net 4.5中异步移动文件。
你能做的最好的事情就是使用像await Task.Run(() => fileinfo.MoveTo(target))
这样的东西,它仍然会阻塞一个线程,但不会阻止当前的线程(如果你在UI线程上可能会有用)。
或者,您也可以使用Stream
(可以是异步)自行复制文件,然后删除原始文件。
答案 1 :(得分:1)
您只能在您呼叫的方法支持时使用等待。
要支持await
,该方法需要返回Task<T>
在这种情况下,fileInfo.MoveTo
不会返回Task