异步/等待的紧凑框架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:
将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