Как прочитать результаты из Windows.Devices.Enumeration.DeviceInformation.FindAllAsync, используя синтаксис await?

На моем компьютере есть работающее устройство чтения смарт-карт, которое должно быть возвращено приведенным ниже фрагментом кода:

string selector = Windows.Devices.SmartCards.SmartCardReader.GetDeviceSelector();
Windows.Devices.Enumeration.DeviceInformationCollection devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(selector);

Тем не менее, я получаю эту ошибку:

Ошибка CS4036 'IAsyncOperation<DeviceInformationCollection>"не содержит определения для"GetAwaiter"и нет метода расширения"GetAwaiter"принятие первого аргумента типа"IAsyncOperation<DeviceInformationCollection>'может быть найдено (вы пропустили директиву использования для'System?)

Фрагмент кода скопирован из образца кода Microsoft C#

Что я могу сделать, чтобы решить эту ошибку?

1 ответ

Сообщение об ошибке дает вам хороший совет о том, что не так. Добавить using System; директива в верхней части вашего файла.

Для дальнейшего использования вы можете отследить это самостоятельно, выполнив поиск в MSDN для соответствующего метода расширения, например, поиск "метод расширения IAsyncOperation GetAwaiter". Когда я это делаю, первой страницей является метод WindowsRuntimeSystemExtensions.GetAwaiter (IAsyncOperation), и на этой странице вы видите, что метод находится в System пространство имен, и определено в System.Runtime.WindowsRuntime.dll сборка. С этими двумя частями информации вы можете перепроверить, чтобы убедиться, что у вас есть using System; в вашем файле.cs, и что у вас есть System.Runtime.WindowsRuntime.dll сборка ссылка в проекте.

Другие вопросы по тегам