问题标签 [async-ctp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在 .net 4 上使用 async-await
我目前正在开始创建一个应用程序,该应用程序将从 C# 5 的 async-await 功能中获益良多。但我不确定要使用哪个版本的 VS 和异步运行时。
查看操作系统流行度图表,我需要再支持 Windows XP 三年左右。看起来 .net 4.5 只能在较新版本的 Windows 上运行,所以我需要以 .net 4.0 为目标。开发机器使用的是Windows 7,所以使用较新版本的VS是没有问题的。
现在我需要首先选择一个编译器来执行此操作:
- VS2010 带 AsyncCTP
- VS2012 预览版(以及最终版),将目标设置为 .net 4.0
- Mono(看起来 2.12 有 async-await,我更喜欢/习惯于 VS 而不是 MonoDevelop 作为 IDE)
哪一个的代码生成错误更少?查看Jon Skeet 的博客,VS2012 预览版使用的代码生成器从未使用过 CTP。
更重要的是要使用哪个运行时?
VS2012 是否包含可重新分发的异步运行时以与 .net 4 一起使用?
通过引用 AsyncCTP 运行时,我设法通过预览编译代码。但由于 CTP 有奇怪的许可条件,这看起来不是一个好的长期解决方案。
还是我应该使用第三方实现?也许单声道有一个?
对于分发库,我更喜欢简单地将 dll 放在与应用程序相同的目录中,而不是某种安装程序。
如果我的二进制文件可以在 mono+Linux/MacOS 上不做任何更改,我也会喜欢它。因此,运行时应该与任何内置的单声道(可能是 2.12)兼容,或者允许在非 Windows 操作系统上使用。
visual-studio - Async CTP3 -- 在 Win 7 新机器上安装完成,但不存在
有人遇到过这个问题吗?我使用 Microsoft Visual Studio Async CTP 3.0 完成了安装过程,大约 20 到 30 分钟后显示安装完成。我在安装后立即运行 Windows 更新,然后重新启动。但是我的电脑上没有任何迹象。我又做了一遍,仍然没有。有没有人遇到过类似的问题,如果有,有什么补救措施吗?
我是 Win 7、Visual Studio、SP 1 等,具备所有先决条件。谢谢!
c# - 我可以将异步 CTP 与 .NET 3.0 一起使用吗?
我可以在 .NET 3.0 中使用新的 AsyncCtpLibrary.dll 吗?如果我在参考文献中添加这个库,它会起作用吗?我需要在新项目中使用 async/await/task 功能。
c# - Async CTP 可以与可移植库一起使用吗
我想看看 Async CTP 是否带有可移植类库?
c# - 代码契约和异步
将后置条件添加到返回的异步方法的推荐方法是什么Task<T>
?
我已阅读以下建议:
http://social.msdn.microsoft.com/Forums/hu-HU/async/thread/52fc521c-473e-4bb2-a666-6c97a4dd3a39
该帖子建议将每个方法实现为同步,将其收缩,然后将异步对应物实现为简单的包装器。不幸的是,我不认为这是一个可行的解决方案(也许是由于我自己的误解):
- async 方法虽然被假定为 sync 方法的包装器,但它没有任何真正的代码协定,因此可以随心所欲。
- 致力于异步的代码库不太可能为所有内容实现同步对应项。结果,
await
在其他异步方法上实现包含 s 的新方法因此被迫异步。这些方法本质上是异步的,不能轻易转换为同步的。它们不仅仅是包装器。
即使我们通过说我们可以使用.Result
or.Wait()
而不是来使后一点无效await
(这实际上会导致一些SyncContext
s 死锁,并且无论如何都必须在 async 方法中重新编写),我仍然相信第一点。
是否有任何替代想法,或者我错过了关于代码合同和 TPL 的任何内容?
c# - 为什么存在 async 关键字
浏览第 9 频道的 msdn 视频时,我发现了以下未答复的评论,希望有人能解释一下吗?
我不明白 async 关键字的意义。为什么不在方法返回 Task 的任何时候都允许 await 关键字,就像迭代器可以在任何返回 IEnumerable 的方法上产生返回一样。
我确信有充分的理由,我只是想了解为什么上述建议是不可能的。
c# - 使用 Async CTP 同时下载 HTML 页面
尝试使用异步 CTP 编写 HTML 爬虫时,我一直不知道如何编写无递归方法来完成此任务。
这是我到目前为止的代码。
但显然这并不像我希望的那样起作用,因为在Parallel.ForEach
执行第一次(也是唯一一次迭代)时,我只有一项。我能想到的最简单的ForEach
递归方法,但我不能(我不认为)这样做,因为我会很快用完堆栈空间。
任何人都可以指导我如何重组此代码,以创建我将描述为添加项目的递归延续,直到MaxStackSize
达到或系统内存不足?
.net - 用异步 CTP 封装同步方法不起作用
去年,我用经典的同步和异步方法编写了一个 Web API 库。我现在正在尝试使用新的C# Async CTP 3添加 TaskAsync 方法。
我写了这个简单的代码来封装同步方法:
然后,从我的 WPF 4 应用程序中,我有一个使用它的异步方法:
问题是:我的同步方法永远不会被调用。调试器转到result = await client.AuthenticateTaskAsync(username, password);
,调试器继续其工作并且永远不会回来。同步中的断点Authenticate
永远不会中断。UpdateStatus
永远不会被调用。很奇怪(我虽然这是一个调试器实现问题)。
然后我看了一下WebClient.DownloadStringTaskAsync
是怎么实现的。我将我的 API 客户端方法更改为:
现在它可以工作了。有人可以解释为什么第一个代码不起作用吗?
c# - 何时使用 TaskEx.Run 与 TaskEx.RunEx
我试图了解何时使用TaskEx.Run
. 我提供了两个我在下面编写的代码示例,它们产生了相同的结果。我没有看到的是为什么我会采用Task.RunEx TaskEx.RunEx
方法,我确信这是有充分理由的,并希望有人可以填补我的空缺。
我可以达到同样的结果
c# - 有什么方法可以在 Compact Framework 3.5 上使用 async/await?
我很好奇是否有任何方法可以将 C# async
/ await
CPS 转换功能与 Compact Framework 代码一起使用。我预计需要提供/重新实现一定数量的库代码才能实现这一目标;如果是这样,我应该在哪里查找有关需要提供哪些类型/成员的信息?
(我不是在这里寻找一个完整的任务异步支持库,只是足够的骨架能够使用语言功能。)