2015-12-31 36 views
7

我有以下代码表示的应用程序的文件选取:“Windows.Storage.StorageFile FILE =等待FilePicker.PickSingleFileAsync()”不工作

var FilePicker = new Windows.Storage.Pickers.FileOpenPicker(); 
FilePicker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; 
FilePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.ComputerFolder; 
FilePicker.FileTypeFilter.Add(".pcs"); 
FilePicker.FileTypeFilter.Add(".pcp"); 

Windows.Storage.StorageFile File = await FilePicker.PickSingleFileAsync(); 

然而,Windows.Storage.StorageFile File = await FilePicker.PickSingleFileAsync()原因此编译期间错误:

错误CS4036“IAsyncOperation < StorageFile>”不包含关于“GetAwaiter”和没有扩展方法“GetAwaiter” 接受类型的第一个参数定义 “IAsyncOperation < StorageFile>” 可以找到(是否缺少using指令 '系统'?)

这究竟是为什么?我从MSDN获得了代码。有人可以帮我吗?

注:我是通用Windows编程。

+2

您是否具有系统使用指令? –

+0

如果您在'using'指令中也发现很多错误,请尝试关注[本文](http://stackoverflow.com/a/34197683/2681948) - 某些项目的原因不明,您需要阅读nuget package 。 – Romasz

回答

23

您在使用中缺少对System的明显提及。

using System; 

为什么你需要这个参考,为什么它抱怨它缺少一个看似未使用的方法?

随着await,它实际上调用WindowsRuntimeSystemExtensions.GetAwaiter,在IAsyncOperation扩展方法(获得TaskAwaiter等待)。由于WindowsRuntimeSystemExtensions驻留在System名称空间中,因此需要使用using来获取扩展方法。

+0

希望'IntelliSense'可以更智能地检测到一个非常简单的错误,因为这个 – mr5