我尝试使用照片选择器从iOS / Android上的库/库中获取照片,因此我使用了Plugin.Media和Xamarin.Forms .
我用过这个:https://github.com/jamesmontemagno/MediaPlugin
问题是函数GetStream()和Dispose()不存在,这里是确切的错误消息:
错误:'Task'不包含'GetStream'的定义,也没有扩展方法'GetStream'接受类型'Task'的第一个参数(你是否缺少using指令或汇编引用?)错误:'任务'不包含'Dispose'的定义,也没有扩展方法'Dispose'接受类型'Task'的第一个参数(你是否缺少using指令或汇编引用?)
addphotos.Clicked = new Command(() => {
if (CrossMedia.Current.IsPickPhotoSupported)
{
if (!CrossMedia.Current.IsPickPhotoSupported)
{
DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
return;
}
var file = CrossMedia.Current.PickPhotoAsync();
if (file == null)
return;
image.Source = ImageSource.FromStream(() =>
{
var stream = file.GetStream();
file.Dispose();
return stream;
});
}
});
2 回答
顾名思义,PickPhotoAsync()是一个异步函数,所以你需要在调用它时使用await .
您需要使lambda异步并等待对CrossMedia.Current.PickPhotoAsync的异步调用:
PickPhotoAsync()是一个异步方法,因此它返回一个Task,但如果你等待它,它将返回你正在寻找的值 . 如果您没有达到异步速度并等待,请查看Microsoft指南:
https://msdn.microsoft.com/en-us/library/mt674882.aspx?f=255&MSPPError=-2147217396