Вы должны либо использовать оболочки Async Xamarin, либо напрямую декомпозировать задачи на базе Android (см. TasksExtensions.AsAsync
, который используют оболочки Xamarin), чтобы получить правильный экземпляр, который возвращает Задача Android:
Пример асинхронной оболочки Xamarin:
private async void GetPhotosAsync(Intent data)
{
var placePicked = PlacePicker.GetPlace(this, data);
string placeId = placePicked.Id;
var photoMetadataResponse = await mGeoDataClient.GetPlacePhotosAsync(placeId);
var photoMetadataBuffer = photoMetadataResponse.PhotoMetadata;
if (photoMetadataBuffer.Count > 0)
{
var photoMetaData = (IPlacePhotoMetadata)photoMetadataBuffer.Get(0);
var photoResponse = await mGeoDataClient.GetPhotoAsync(photoMetaData);
var bitmap = photoResponse.Bitmap;
~~~
}
}
Примечание: я предполагаю, что GetPhotosAsync вернет что-то отличное от void
, когда вы получите остальное, метод очищен ...
Обновление:
private async void GetPhotos(Intent data)
{
var placePicked = PlacePicker.GetPlace(this, data);
string placeId = placePicked.Id;
using (var photoMetadataResponse = await mGeoDataClient.GetPlacePhotosAsync(placeId))
using (var photoMetadataBuffer = photoMetadataResponse.PhotoMetadata)
{
foreach (var item in photoMetadataBuffer)
{
using (var photoResponse = await mGeoDataClient.GetPhotoAsync(item))
{
var bitmap = photoResponse.Bitmap;
photoResponse.Dispose();
}
break;
}
}
}