Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MvvmCross中创建异步ValueConverter_C#_Xamarin_Mvvmcross - Fatal编程技术网

C# 在MvvmCross中创建异步ValueConverter

C# 在MvvmCross中创建异步ValueConverter,c#,xamarin,mvvmcross,C#,Xamarin,Mvvmcross,在我的应用程序中,我的ValueConverter正在进行一些图像转换(如带有额外任务的InMemoryImageValueConverter)。这需要一段时间,所以我的GUI会冻结半秒钟,这真的很烦人 由于它非常特定于平台,我无法在ViewModels中执行此操作。所以我想使用异步ValueConverter之类的东西在后台执行此操作。有可能吗 否则,最佳做法是什么?我的选择是在活动中调用此代码,这将跳过MVVM模式 我发现斯蒂芬·克利里对这个问题的回答很有帮助: 最后,我在Windows特定

在我的应用程序中,我的ValueConverter正在进行一些图像转换(如带有额外任务的InMemoryImageValueConverter)。这需要一段时间,所以我的GUI会冻结半秒钟,这真的很烦人

由于它非常特定于平台,我无法在ViewModels中执行此操作。所以我想使用异步ValueConverter之类的东西在后台执行此操作。有可能吗


否则,最佳做法是什么?我的选择是在活动中调用此代码,这将跳过MVVM模式

我发现斯蒂芬·克利里对这个问题的回答很有帮助:

最后,我在Windows特定的值转换器中使用了他出色的AsyncEx库,对字节数组进行异步转换。对于Android和iOS,我能够在MVVMCross自定义绑定中进行异步转换,而不需要值转换器


在我写的一篇博文中可以找到更多的信息:

您也可以在viewmodel中使用特定于平台的方法。这并不局限于您的UI。如果这是你的方法,我可以给你一个答案。但我不知道如何实现异步ValueConverter。但我认为你不应该在一个价值转换器中进行大的操作。请提供一点关于你想做什么的信息。谢谢你的回答。好。实际上,我有一张图像的
byte[]
,我想把它转换成android位图。在此之后,我将此位图与直接从参考资料加载的其他位图合并在画布上。您是否尝试过使用已存在的位图?IValueConverter接口不是异步的,因此我认为您的方法注定失败。您可以改为实现自定义控件(从MvxView继承),并在自定义属性设置器中进行转换。