问题标签 [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.

0 投票
5 回答
66817 浏览

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 操作系统上使用。

0 投票
0 回答
175 浏览

visual-studio - Async CTP3 -- 在 Win 7 新机器上安装完成,但不存在

有人遇到过这个问题吗?我使用 Microsoft Visual Studio Async CTP 3.0 完成了安装过程,大约 20 到 30 分钟后显示安装完成。我在安装后立即运行 Windows 更新,然后重新启动。但是我的电脑上没有任何迹象。我又做了一遍,仍然没有。有没有人遇到过类似的问题,如果有,有什么补救措施吗?

我是 Win 7、Visual Studio、SP 1 等,具备所有先决条件。谢谢!

0 投票
1 回答
285 浏览

c# - 我可以将异步 CTP 与 .NET 3.0 一起使用吗?

我可以在 .NET 3.0 中使用新的 AsyncCtpLibrary.dll 吗?如果我在参考文献中添加这个库,它会起作用吗?我需要在新项目中使用 async/await/task 功能。

0 投票
4 回答
1364 浏览

c# - Async CTP 可以与可移植库一起使用吗

我想看看 Async CTP 是否带有可移植类库?

0 投票
3 回答
1332 浏览

c# - 代码契约和异步

将后置条件添加到返回的异步方法的推荐方法是什么Task<T>

我已阅读以下建议:

http://social.msdn.microsoft.com/Forums/hu-HU/async/thread/52fc521c-473e-4bb2-a666-6c97a4dd3a39

该帖子建议将每个方法实现为同步,将其收缩,然后将异步对应物实现为简单的包装器。不幸的是,我不认为这是一个可行的解决方案(也许是由于我自己的误解):

  1. async 方法虽然被假定为 sync 方法的包装器,但它没有任何真正的代码协定,因此可以随心所欲。
  2. 致力于异步的代码库不太可能为所有内容实现同步对应项。结果,await在其他异步方法上实现包含 s 的新方法因此被迫异步。这些方法本质上是异步的,不能轻易转换为同步的。它们不仅仅是包装器。

即使我们通过说我们可以使用.Resultor.Wait()而不是来使后一点无效await(这实际上会导致一些SyncContexts 死锁,并且无论如何都必须在 async 方法中重新编写),我仍然相信第一点。

是否有任何替代想法,或者我错过了关于代码合同和 TPL 的任何内容?

0 投票
4 回答
3601 浏览

c# - 为什么存在 async 关键字

浏览第 9 频道的 msdn 视频时,我发现了以下未答复的评论,希望有人能解释一下吗?

我不明白 async 关键字的意义。为什么不在方法返回 Task 的任何时候都允许 await 关键字,就像迭代器可以在任何返回 IEnumerable 的方法上产生返回一样。

我确信有充分的理由,我只是想了解为什么上述建议是不可能的。

0 投票
1 回答
1965 浏览

c# - 使用 Async CTP 同时下载 HTML 页面

尝试使用异步 CTP 编写 HTML 爬虫时,我一直不知道如何编写无递归方法来完成此任务。

这是我到目前为止的代码。

但显然这并不像我希望的那样起作用,因为在Parallel.ForEach执行第一次(也是唯一一次迭代)时,我只有一项。我能想到的最简单的ForEach递归方法,但我不能(我不认为)这样做,因为我会很快用完堆栈空间。

任何人都可以指导我如何重组此代码,以创建我将描述为添加项目的递归延续,直到MaxStackSize达到或系统内存不足?

0 投票
1 回答
644 浏览

.net - 用异步 CTP 封装同步方法不起作用

去年,我用经典的同步和异步方法编写了一个 Web API 库。我现在正在尝试使用新的C# Async CTP 3添加 TaskAsync 方法。

我写了这个简单的代码来封装同步方法:

然后,从我的 WPF 4 应用程序中,我有一个使用它的异步方法:

问题是:我的同步方法永远不会被调用。调试器转到result = await client.AuthenticateTaskAsync(username, password);,调试器继续其工作并且永远不会回来。同步中的断点Authenticate永远不会中断。UpdateStatus永远不会被调用。很奇怪(我虽然这是一个调试器实现问题)。

然后我看了一下WebClient.DownloadStringTaskAsync是怎么实现的。我将我的 API 客户端方法更改为:

现在它可以工作了。有人可以解释为什么第一个代码不起作用吗?

0 投票
3 回答
13282 浏览

c# - 何时使用 TaskEx.Run 与 TaskEx.RunEx

我试图了解何时使用TaskEx.Run. 我提供了两个我在下面编写的代码示例,它们产生了相同的结果。我没有看到的是为什么我会采用Task.RunEx TaskEx.RunEx方法,我确信这是有充分理由的,并希望有人可以填补我的空缺。

我可以达到同样的结果

0 投票
2 回答
2158 浏览

c# - 有什么方法可以在 Compact Framework 3.5 上使用 async/await?

我很好奇是否有任何方法可以将 C# async/ awaitCPS 转换功能与 Compact Framework 代码一起使用。我预计需要提供/重新实现一定数量的库代码才能实现这一目标;如果是这样,我应该在哪里查找有关需要提供哪些类型/成员的信息?

(我不是在这里寻找一个完整的任务异步支持库,只是足够的骨架能够使用语言功能。)