2015-12-31 15 views
7

Tôi có đoạn code sau đây cho thấy một Picker tập tin trong một ứng dụng:'Windows.Storage.StorageFile file = chờ đợi FilePicker.PickSingleFileAsync()' không làm việc

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(); 

Tuy nhiên, Windows.Storage.StorageFile File = await FilePicker.PickSingleFileAsync() nguyên nhân lỗi này trong thời gian biên dịch:

Lỗi CS4036 'IAsyncOperation < StorageFile>' không chứa một định nghĩa cho 'GetAwaiter' và không có phương pháp mở rộng 'GetAwaiter' chấp nhận một cuộc tranh luận đầu tiên của loại 'IAsyncOperation < StorageFile> ' có thể được tìm thấy (bạn đang thiếu một chỉ thị sử dụng cho' Hệ thống '?)

Tại sao điều này xảy ra? Tôi nhận được mã từ MSDN. Có thể ai đó hãy giúp tôi?

Lưu ý: Tôi đang lập trình cho Universal Windows.

+2

Bạn có chỉ thị sử dụng cho Hệ thống như nó chỉ ra không? –

+0

Nếu bạn nhận được nhiều lỗi cũng trong chỉ thị 'using', sau đó thử theo [bài đăng này] (http://stackoverflow.com/a/34197683/2681948) - từ những lý do không xác định cho một số dự án bạn cần phải thêm lại gói nuget . – Romasz

Trả lời

23

Bạn thiếu tham chiếu rõ ràng đối với System trong cách sử dụng của mình.

using System; 

Tại sao bạn cần tham chiếu này và lý do khiến nó bị thiếu phương pháp dường như không được sử dụng?

Với await, nó thực sự gọi WindowsRuntimeSystemExtensions.GetAwaiter, một phương pháp mở rộng trên IAsyncOperation (để nhận được TaskAwaiter để chờ). Vì WindowsRuntimeSystemExtensions nằm trong không gian tên System, bạn cần có using để nhận phương thức tiện ích.

+0

Hy vọng 'IntelliSense' có thể thông minh hơn nhiều khi phát hiện một sai lầm rất đơn giản như thế này – mr5

Các vấn đề liên quan