首页 文章

Xamarin.Forms Plugin.Media GetStream / Dispose不存在

提问于
浏览
0

我尝试使用照片选择器从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 回答

  • 1

    顾名思义,PickPhotoAsync()是一个异步函数,所以你需要在调用它时使用await .

    // file will be a Task<MediaFile>
    var file = CrossMedia.Current.PickPhotoAsync();
    
    // file will be a MediaFile
    var file = await CrossMedia.Current.PickPhotoAsync();
    
  • 0

    您需要使lambda异步并等待对CrossMedia.Current.PickPhotoAsync的异步调用:

    addphotos.Clicked = new Command(async () => { 
        if (CrossMedia.Current.IsPickPhotoSupported)
        {
            if (!CrossMedia.Current.IsPickPhotoSupported)
            {
                DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
                return;
            }
            var file = await CrossMedia.Current.PickPhotoAsync();
    
            if (file == null)
                return;
    
            image.Source = ImageSource.FromStream(() =>
            {
                var stream = file.GetStream();
                file.Dispose();
                return stream;
            });
        }
    });
    

    PickPhotoAsync()是一个异步方法,因此它返回一个Task,但如果你等待它,它将返回你正在寻找的值 . 如果您没有达到异步速度并等待,请查看Microsoft指南:

    https://msdn.microsoft.com/en-us/library/mt674882.aspx?f=255&MSPPError=-2147217396

相关问题