我注意到许多具有返回值或多个结果的当前插件都使用了操作。例如,PictureChooserTask.TakePicture获取成功Action<Stream>
和取消操作。
我想知道的是为什么不让PictureChooserTask.TakePicture返回Task<Stream>
?跨平台不支持任务吗?
很抱歉,如果这是一个noob问题,但我来自Windows并且尚未将我的mvvmcross项目带到其他平台。我更喜欢使用Tasks,但我想在写第一个插件之前确保我遵循正确的模式。
谢谢!
答案 0 :(得分:0)
我想知道的是为什么不让PictureChooserTask.TakePicture返回一个任务?跨平台不支持任务吗?
原始MvvmCross插件是在async
可用于任何平台之前制作的,并且在BCL.Async
便携式软件包被许可在Microsoft Windows平台之外使用之前。由于这两个因素,未使用Task
和async
。
但是,async
现在可以在所有平台上使用,并且最近对Microsoft的许可进行了一些很好的更改。
因此,插件现在可以免费使用Task
和async
有关使用Task
的插件示例,请查看https://github.com/Cheesebaron/Cheesebaron.MvxPlugins中的某些插件 - 例如在https://github.com/Cheesebaron/Cheesebaron.MvxPlugins/tree/master/Connectivity/
请注意,在构建使用Task
的插件时,“核心”可移植库可能需要基于PCL配置文件158或配置文件78.如果选择158,则插件需要引用BCL.Async
便携式nuget包,以便使用Task
。如果选择78,那么Task
将无法使用额外的软件包 - 唯一的损失是您的插件将无法返回到Silverlight或任何自己选择使用配置文件158的项目。