async/await for Compact Framework v3.5 - 手动实现

2023-12-27

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

由于很明显会导致代码难以在移动设备端维护(检查连接→完成时:检查网络服务可用性→完成时:检查移动设备是否有资格同步→完成后开始交换数据)我会喜欢使用同步编程方式awaits.

我找到了一些代码片段 https://gist.github.com/dgrunwald/1961087由 Daniel Grunwald 编写,这是编译器异步/等待功能所需内容的最小实现。和...一起.Net 3.5 的任务并行库 http://compactframeworktpl.codeplex.com/(我必须稍微改变一下,因为某些调用的方法不存在所需的签名)例如实现任务类型,它看起来很有希望。

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

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

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

Update 亚伦·斯坦巴克的帖子 https://stackoverflow.com/a/16751975/249988表明应该可以使用 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' 目录;
  • 创建一个名为 ' 的目录红名单';
  • 创建一个名为 '框架列表.xml' at '红名单' 目录;
  • 将以下内容设置到创建的文件中:

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

现在您可以创建一个.NET Core 类库Visual Studio 2015 上的项目和目标 'net35-cf' 框架。

要使用 async/await 你可以使用NET标准.Windows CE包裹。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

async/await for Compact Framework v3.5 - 手动实现 的相关文章

  • WPF 应用程序中的调度程序实现多个异步任务

    在下面的 MSDN 示例中WPF应用程序 它演示了async await多异步的实现Tasks the Dispatcher对象显然没有被使用 需要 即异步执行Tasks似乎可以直接访问 UI 控件 在本例中resultTextBox Te
  • 在wince上用c#静默运行命令行程序

    我再次需要一些帮助 我使用 net Compact Framework 和编程语言 C 来为运行 WinCE 5 0 的移动设备进行开发 我想要完成的是以编程方式安装网络驱动器 为此 应用程序在后台线程中运行以下代码 ProcessStar
  • JavaScript/Angular 1 - Promise.all 到 async-await

    我在两个变量中分配了对 Web 服务的两次调用referencesPromise and contactTypesPromise onInit 如果需要 我可以为此创建一个新方法 onInit const referencesPromise
  • 无法在泛型方法中将类型更改为可为空

    我正在创建一个通用转换器 这是通用转换器的示例代码 bool TryReaderParse
  • .Net Core 异步关键部分(如果在同一实体上工作)

    我需要确保通过 Web API 访问的方法不能同时通过多个调用访问 如果它在具有相同 id 的同一对象上工作 我理解使用SemaphoreSlim但一个简单的实现将锁定所有人的关键部分 但只有当该部分适用于同一实体而不是两个不同的实体时 我
  • XAML - 带有触发器/参数的通用文本框样式?

    我希望能够拥有一个通用样式模板 可以根据布尔值切换文本框的颜色 但我不想为每个文本框创建独特的样式 我该怎么做呢 我在下面放置了一些示例代码 我希望它如何工作 三个文本框 均具有不同的绑定 但尝试使用相同的模板基于布尔值选择红色或绿色 Th
  • 在异步方法中显示错误消息的更好方法

    事实上我们不能使用await关键字在catch块使得在 WinRT 中显示来自异步方法的错误消息变得非常尴尬 因为MessageDialogAPI 是异步的 理想情况下我希望能够这样写 private async Task DoSometh
  • 请求失败,HTTP 状态 401:未经授权

    我有一个在 IIS6 XP Pro SP2 中运行的 NET 2 0 网站 VB 和托管 ASMX Web 服务的 NET 3 5 当然 在 IIS 的 ASP NET 选项卡下配置为 NET2 在 Chrome 中 我可以成功调用 ASM
  • 所有 C++ 编译器都支持 async/await 关键字吗?

    我想用async awaitC UE4 框架 中的语法 但由于跨平台代码 我不确定这是否可能 或者可能 如果是 我该如何使用它 而且还有await and await resumable yield and yield value另外 在
  • 如何使用 C#8 IAsyncEnumerable 异步枚举并行运行的任务

    如果可能的话 我想为并行启动的任务创建一个异步枚举器 因此 首先完成的是枚举的第一个元素 第二个完成的是枚举的第二个元素 依此类推 public static async IAsyncEnumerable
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 从 Visual Studio 连接到 WinCE 设备

    我有一个 WinCE 设备 是否可以从Visual Studio连接到设备来查看以下内容 Folder structure Applications running Registry values 还有其他方法可以查看这些项目吗 我可以从哪
  • 自动执行异步函数

    下面的代码可以完美运行 const Course mongoose model Course courseSchema async function foo const nodeCourse new Course name Node JS
  • 如何强制串行端口写入方法在发送数据之前等待线路清除?

    以下是我正在尝试做的一些背景 打开从移动设备到蓝牙打印机的串行端口 将 EPL 2 表格发送到蓝牙打印机 以便它了解如何处理即将接收的数据 收到表格后 将一些数据发送到打印机 这些数据将打印在标签纸上 根据需要多次重复步骤 3 打印每个标签
  • 递归例程获取PropertyInfo

    我正在尝试创建一个递归例程 它将检索指定对象 在 NET 3 5 中 下的所有成员的 PropertyInfos 直接成员的一切都正常 但它还需要解析嵌套类 及其嵌套类等 我不明白如何处理解析嵌套类的部分 这部分代码你会怎么写呢 publi
  • Python 3.4 中的“异步”

    aiohttp 的入门文档提供了以下客户端示例 import asyncio import aiohttp async def fetch page session url with aiohttp Timeout 10 async wit
  • 如何在控制台应用程序中从 Task.WaitAll() 获取返回值?

    我使用控制台应用程序作为概念证明和获取异步返回值的新需求 我发现我需要使用Task WaitAll 在我的 main 方法中以避免需要异步 main 方法 这是非法的 我现在一直在试图找出一个重载 该重载允许我使用泛型或仅返回一个可以转换的
  • C# 紧凑框架 - 带有 XmlSerializer.Serialize 的 OutOfMemoryException

    我正在尝试序列化集合中的大量对象 20 000 个 对象 我使用以下代码执行此操作 XmlSerializer xs new XmlSerializer deserialized GetType StringWriter sw using
  • 如何在 SignalR 客户端中将 async/await 与 hub.On 一起使用

    我有一个与 SignalR Hub 服务器 通信的 Net Windows 服务 客户端 大多数客户端方法都需要时间才能完成 当收到来自服务器的调用时 我如何 或需要 包装目标方法 hub On以避免警告 由于不等待此调用 因此在调用完成之

随机推荐

  • UITextView 内的动画 Gif

    我看了一下this https stackoverflow com questions 20930462 ios 7 textkit how to insert images inline with text问题 但没有成功 我也在努力避免
  • 在 MySQL 中比较时,转换为 varchar 或 varchar 为 int 更快吗?

    所以我有两个表 它们的 ID 引用同一对象 其中一个表将其存储为 varchar 另一个表将其存储为 int 我想要子查询 或者可能连接 这两个表 WHERE foo CAST bar AS UNSIGNED or WHERE CAST f
  • 睾丸:遇到声明异常

    我在 angular js 中定义了一个空模块 angular module todoList function 然后我想测试它 在我的conf js 我加载这些 javascript files JASMINE JASMINE ADAPT
  • 更改我的所有网站链接:最好的方法是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 htaccess 重写以将根 URL 重定向到子目录 https stackoverflow com questions 990392 htaccess rewrite to redirect roo
  • 我应该如何避免记忆导致 Ruby 中的错误?

    对于如何避免由于可变状态而导致记忆错误是否存在共识 在此示例中 缓存结果的状态发生了变化 因此在第二次调用时给出了错误的结果 class Greeter def initialize greeting cache end def expen
  • Xcode 5 上的项目宽字匹配搜索

    我正在使用 Xcode 5 并且希望不是通过子字符串匹配而是通过精确匹配 或前缀匹配 来查找单词 例如 变量名 在文件范围搜索 Command F 中 我可以通过单击玻璃图标右侧的箭头按钮并选择 编辑查找选项 来使用文本搜索或正则表达式搜索
  • 如何轻松地从 MySQL 迁移到 PostgreSQL?

    我想在现有的 MySQL 数据库 大约 40 个表 400 MB 数据 变得更大之前将其迁移到 Postgres 我在网上搜索并尝试了一些迁移脚本 其中一些可以找到here http wiki postgresql org wiki Con
  • jenkins:通过 Groovy API 设置根 url

    我正在尝试通过 Groovy API 更新 Jenkins 的根 URL 这样我就可以编写 Jenkins master 的部署脚本 而无需手动输入 旁白 为什么像 Jenkins 这样受构建 devops 自动化社区欢迎的工具如此抵制 自
  • C 中的 for 循环和 getchar()

    为什么代码偶数次直接获取到空数据 我不知道发生了什么事 非常感谢 include
  • 将 HTML 表单中的用户输入作为 Python 脚本的变量 [重复]

    这个问题在这里已经有答案了 我正在 Python Flask 中创建一个 Web 应用程序 以使用 tweepy 使用 twitters API 显示推文 我已经设置了一个 HTML 表单 并获得了用于查找具有特定输入的推文的脚本 目前 这
  • ImageButton 位于 ImageView 后面并偏移

    因此 我正在为我的应用程序进行设计 我需要将图像按钮直接放在图像视图下方 但由于我的图像视图周围有一个带有阴影的边框 我需要将图像按钮隐藏 向上移动 在图像视图后面大约 10 个像素 这是我想要的快速绘图 我希望这是有道理的 我一直在尝试各
  • ToString 和字符串连接 - 意外行为

    根据互联网 当你这样做时 String someString object1 object2 object3 ToString 在每个对象上调用 但这并没有发生 这段代码 String a a foo String b b foo ToSt
  • 为什么我在 Minikube 上收到“未绑定的立即 PersistentVolumeClaims”?

    我得到 pod 有未绑定的立即 PersistentVolumeClaims 我不知道为什么 我在 macOS 上运行 minikube v0 34 1 以下是配置 es pv yaml apiVersion v1 kind Persist
  • SwiftUI:点击时更改列表行突出显示颜色

    点击时列表行的默认颜色为灰色 我知道如何使用 listRowBackground 更改背景颜色 但随后它会更改为整个列表 如何在点击时更改为自定义颜色 以便只有点击的行保持红色 import SwiftUI struct ExampleVi
  • 当涉及协调器时,如何在 SwiftUI 视图与另一个视图之间进行通信?

    我是 SwiftUI 新手 才几天努力学习 我试图找到这方面的教程 但没有成功 想象一下我有以下观点 Struct MyPicker View MyPicker是在一个里面VStack inside ContentView 我必须通过 从M
  • 创建表时“关系中缺少列”

    我尝试创建三个表 CUSTOMERS VEHICLES 和 RENTALS 第三个表 RENTALS 的外键引用前两个表 CUSTOMERS 和 RENTALS 的两个主键 创建第三个表时出现错误关系中缺少列 Rel CUSTOMERS g
  • 短小精悍地插入一个列表?

    我想做批量插入 A 是一个 ID B 是 ID 列表 我的插入语句看起来像这样 但它是错误的 我如何重写它才能工作 我能想到的唯一解决方案是在语句之 外使用 foreach 循环 Execute insert into MyTable a
  • Android 谷歌地图获取边界坐标

    我在我的应用程序中使用 Google 地图 v2 当用户平移或缩放屏幕时 我想获取地图区域 根据该区域我只想在屏幕视图部分获取 POI 我浏览了文档但找不到任何帮助 你需要使用Projection https developers goog
  • 如何在张量流上加载和使用保存的模型?

    我找到了两种在 Tensorflow 中保存模型的方法 tf train Saver and SavedModelBuilder 然而 我找不到有关使用该模型的文档以第二种方式加载后 注 我想用SavedModelBuilder方式 因为我
  • async/await for Compact Framework v3.5 - 手动实现

    我必须为 WinCE 5 0 开发一个应用程序 它与常规 PC 应用程序通信 同步数据 该应用程序提供我可以与我的移动 工业 设备通信的 Web 服务 由于很明显会导致代码难以在移动设备端维护 检查连接 完成时 检查网络服务可用性 完成时