无法在C#5.0中正确应用Await和Async

时间:2012-06-23 07:42:35

标签: c# async-await c#-5.0

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

由于

2 个答案:

答案 0 :(得分:4)

错误说明了一切:你不能await void。您只能await Task以及与Task类似的内容(例如YieldAwaitableTask.Yield()返回的内容)。但你肯定不能await void

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

你能做的最好的事情就是使用像await Task.Run(() => fileinfo.MoveTo(target))这样的东西,它仍然会阻塞一个线程,但不会阻止当前的线程(如果你在UI线程上可能会有用)。

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

答案 1 :(得分:1)

您只能在您呼叫的方法支持时使用等待。

要支持await,该方法需要返回Task<T>

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