gpt4 book ai didi

image - 使用 mvvmcross 和 mono 选择图像时出现问题

转载 作者:行者123 更新时间:2023-12-01 09:59:10 26 4
gpt4 key购买 nike

我正在使用以下两种方法在用户图像文件夹中选择图像。但是我的问题是,每次调用 ChoosePhotoForEventItem() 后,服务似乎都记住了提供的操作 (UploadImage)。也就是说,第二次调用ChoosePhotoForEventItem()时,会触发两次UploadImage方法,第三次会触发三次。我尝试将该方法转换为一个属性并将其设置为 null,这样不会改变任何东西。

       public void ChoosePhotoForEventItem()
{
var picChooser = this.GetService<IMvxPictureChooserTask>();

picChooser.ChoosePictureFromLibrary(MaxPixelDimension, DefaultJpegQuality,this.UploadImage,delegate {/*Do nothing on cancel*/});

}

private void UploadImage(Stream stream)
{
this.UploadImage(stream, ItemID);
}

非常感谢任何帮助

最佳答案

查看插件,每次调用 GetService 都会为一个新实例注册任务

        this.RegisterServiceType<IMvxPictureChooserTask, MvxImagePickerTask>();

https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Plugins/PictureChooser/Cirrious.MvvmCross.Plugins.PictureChooser.Touch/Plugin.cs

看起来每个 MvxImagePickerTask 实例都在 https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Plugins/PictureChooser/Cirrious.MvvmCross.Plugins.PictureChooser.Touch/MvxImagePickerTask.cs 中创建了它自己的 UIImagePickerController|

所以我无法在插件中发现任何错误,尤其是当您的代码调用 var picChooser = this.GetService<IMvxPictureChooserTask>(); 时每次。


您是否有一个简单的示例应用程序供人们尝试运行以进行调试?

如果没有,你可以尝试运行类似的东西吗:

private int _counter = 0;

public void ChoosePhotoForEventItem()
{
_counter++;
var localCounter = _counter;
var picChooser = this.GetService<IMvxPictureChooserTask>();

picChooser.ChoosePictureFromLibrary(MaxPixelDimension,
DefaultJpegQuality,
(stream) => this.SpecialUploadImage(stream, localCounter),
delegate {/*Do nothing on cancel*/});
}

private void SpecialUploadImage(Stream stream, int theCounter)
{
MvxTrace.Trace("Callback for localCounter {0}", theCounter);
this.UploadImage(stream, ItemID);
}

由此产生的踪迹将帮助我们找出哪个 Action 被调用了三次

关于image - 使用 mvvmcross 和 mono 选择图像时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15206135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com