.net-3.5 - Async/await for Compact Framework v3.5 - 手动实现

标签 .net-3.5 windows-mobile compact-framework windows-ce async-await

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

因为这显然会导致移动设备端难以维护的代码(检查连接→完成时:检查Web服务可用性→完成时:检查移动设备是否有资格同步→完成后开始交换数据)我很乐意使用 awaits 进行同步编程。

我找到了一些code snippet由 Daniel Grunwald 编写,这是编译器异步/等待功能所需内容的最小实现。与Task Parallel Library for .Net 3.5一起(我必须稍微改变一下,因为某些调用的方法不存在所需的签名)例如,它实现了任务类型,它看起来很有希望。

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

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

有经验的人可以评估一下我的意图吗?很想听听您的评论、想法和替代方法。谢谢。

更新 Aaron Stainback's post表明应该可以使用 VS2012 构建 CF 3.5。这至少应该解决编译器问题。

最佳答案

您可以按照以下说明使用 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”的文件;
  • 将以下内容设置到创建的文件中:

    <?xml version="1.0" encoding="utf-8"?>
    <FileList Redist="Net35-CF" Name=".NET Compact Framework 3.5">
    </FileList>
    

现在,您可以在 Visual Studio 2015 上创建一个.NET Core 类库项目,并以“net35-cf”框架为目标。

要使用 async/await,您可以使用NETStandard.WindowsCE 包。

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

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

关于.net-3.5 - Async/await for Compact Framework v3.5 - 手动实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17270216/

相关文章:

c# - ASP.NET 3.5 网络表单的日期时间选择器

c# - 如何使用 .NET Compact Framework 播放视频?

c# - 知道谁在失去焦点事件中获得了焦点

regex - 通过将值插入正则表达式模式来构造字符串的最简单方法?

c# 按联系人状态和名称对列表中的对象进行排序

c# - 如何在没有第三方库的情况下在 CF 2.0 中制作透明图像?

C# 移动扫描仪值表现得很奇怪

windows-mobile - dotnet compact framework 3.5 sp1 检测设备分辨率

logging - cf.net 异常和其他日志记录

c# - 如何让 LinqToXSD 正确输出 namespace 前缀声明?