异步/等待的紧凑框架v3.5

我必须开发一个WinCE 5.0应用程序,它可以与普通PC应用程序进行通信/同步数据,该应用程序提供可以与我的移动(工业)设备通信的web服务。

由于很明显会导致移动设备端难以维护的代码(检查连接→完成时:检查web服务可用性→完成时:检查移动设备是否有资格进行同步→完成时开始交换数据)我会爱上以await方式使用同步编程方式。

我发现了Daniel Grunwald的一些代码片段,它是编译器为异步/等待功能所需的最小实现。 与.Net 3.5的Task Parallel Library(我不得不稍微更改一下,因为某些调用的方法不存在需要的签名),它实现了Task类型,它看起来很有前途。

到目前为止,该解决方案无法构建,因为我缺少TaskCompletionSource的实现。 我使用ILSpy对最近的mscorlib进行了反编译,但是代码不可用 - 使用中的类型太多,而这些类型在CF中不存在。

在这一点上,我想知道这个项目是否会失败,因为我永远不会说服VS 2008(我必须在ordner中使用目标智能设备)来使用C#5编译器(也许有一个解决方法?),或者CF缺少TaskCompletionSource的关键类型(我可能需要,因为我想让事件等待),或者TPL3.5 + Grunwald的片段+ TCS实现将构建但实际上并不工作。

有更多经验的人请评估我的意图吗? 很想听听你的意见,想法和替代方法。 谢谢。

更新 Aaron Stainback的帖子表明应该可以用VS2012构建CF 3.5。 这应该至少解决编译器问题。


我认为增加对async支持 - await一个本来不支持它的平台应该是可行的,因为这正是Microsoft.Bcl.Async为.Net 4.0所做的。

但是使用async - await需要支持它的编译器,否则没有办法。 这意味着VS 2012或可能VS 2010与Async CTP(但我不会建议,这不是生产质量)。 据我所知,VS 2008无法做到这一点。

还有一种可能性是使用Mono,但我不知道它是否支持WinCE。


您可以按照以下说明使用Visual Studio 2015编译为Compact Framework 3.5:

  • 安装'.NET Compact Framework 3.5 Redistributable';
  • 从'C: Program Files(x86) Microsoft.NET SDK CompactFramework v3.5 WindowsCE'复制文件;
  • 将文件粘贴在'C: Program Files(x86) Reference Assemblies Microsoft Framework .NETFramework v3.5 Profile CompactFramework'目录下;
  • 创建一个名为'RedistList'的目录;
  • 在'RedistList'目录下创建一个名为'FrameworkList.xml'的文件;
  • 将follwing内容设置为创建的文件:

    <?xml version="1.0" encoding="utf-8"?>
    <FileList Redist="Net35-CF" Name=".NET Compact Framework 3.5">
    </FileList>
    
  • 现在,您可以在Visual Studio 2015上创建一个.NET Core Class Library项目,并以'net35-cf'框架为目标。

    要使用异步/等待,您可以使用System.Threading.Tasks.WindowsCE软件包。

    示例项目可在以下位置找到:https://github.com/WindowsCE/System.Collections.Concurrent/tree/08669ca5b45cc5c74c8c225a633828f9e26b5276

    免责声明:我是上述软件包和项目的作者。

    链接地址: http://www.djcxy.com/p/14499.html

    上一篇: Async/await for compact framework v3.5

    下一篇: maven skinnyWars does not remove ejb jars from WEB