插件的任务或操作?

时间:2014-01-07 01:08:06

标签: mvvmcross

我注意到许多具有返回值或多个结果的当前插件都使用了操作。例如,PictureChooserTask.TakePicture获取成功Action<Stream>和取消操作。

我想知道的是为什么不让PictureChooserTask.TakePicture返回Task<Stream>?跨平台不支持任务吗?

很抱歉,如果这是一个noob问题,但我来自Windows并且尚未将我的mvvmcross项目带到其他平台。我更喜欢使用Tasks,但我想在写第一个插件之前确保我遵循正确的模式。

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我想知道的是为什么不让PictureChooserTask.TakePicture返回一个任务?跨平台不支持任务吗?

原始MvvmCross插件是在async可用于任何平台之前制作的,并且在BCL.Async便携式软件包被许可在Microsoft Windows平台之外使用之前。由于这两个因素,未使用Taskasync

但是,async现在可以在所有平台上使用,并且最近对Microsoft的许可进行了一些很好的更改。

因此,插件现在可以免费使用Taskasync

有关使用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的项目。

相关问题