问题标签 [async-await]

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 投票
8 回答
2443 浏览

c# - 新的 C# Async 功能的一个好的非网络示例是什么?

微软刚刚宣布了新的 C# Async 特性。到目前为止,我看到的每个示例都是关于从 HTTP 异步下载内容的。当然还有其他重要的异步事情?

假设我没有编写新的 RSS 客户端或 Twitter 应用程序。C# Async 对我来说有什么有趣的地方?

编辑我有一个啊哈!观看安德斯的 PDC 会议时的片刻。过去,我曾研究过使用“观察者”线程的程序。这些线程等待某事发生,例如等待文件更改。他们不做工作,他们只是闲着,当有事情发生时通知主线程。这些线程可以用新模型中的等待/异步代码替换。

0 投票
3 回答
14179 浏览

c# - 异步在 C# 中如何工作?

Microsoft今天(2010 年 10 月 28 日)宣布了Visual Studio Async CTPasync ,它在 C#/VB 中引入了andawait关键字,用于异步方法执行。

首先,我认为编译器会将关键字转换为线程的创建,但根据白皮书和 Anders Hejlsberg 的PDC 演示文稿(31:00),异步操作完全发生在主线程上。

如何在同一线程上并行执行操作?它在技术上是如何实现的,以及在 IL 中实际翻译的功能是什么?

0 投票
7 回答
15238 浏览

c# - C# 5.0 的 async-await 特性与 TPL 有何不同?

我看不出 C#(和 VB)的新异步功能和 .NET 4.0 的Task Parallel Library之间有什么不同。以 Eric Lippert的代码为例

await关键字似乎有两个不同的目的。第一次出现 ( FetchAsync) 似乎意味着“如果稍后在方法中使用此值并且其任务未完成,请等到它完成后再继续。” 第二个实例 ( archive) 似乎意味着“如果此任务尚未完成,请立即等待它完成。” 如果我错了,请纠正我。

难道就不能这么简单地写成这样吗?

我已将第一个替换awaitTask.Result实际需要该值的位置,将第二个await替换Task.Wait()为实际发生等待的位置。该功能(1)已经实现,并且(2)在语义上更接近代码中实际发生的情况。

我确实意识到一个async方法被重写为状态机,类似于迭代器,但我也看不到它带来了什么好处。任何需要另一个线程来操作的代码(例如下载)仍然需要另一个线程,并且任何不需要的代码(例如从文件中读取)仍然可以利用 TPL 仅与单个线程一起工作。

我显然在这里遗漏了一些巨大的东西。任何人都可以帮助我更好地理解这一点吗?

0 投票
5 回答
46362 浏览

c# - 新的 C# 等待功能有什么作用?

谁能解释一下这个await功能是做什么的?

0 投票
3 回答
11798 浏览

c# - 为什么 WebClient.DownloadStringTaskAsync() 阻塞?- 新的异步 API/语法/CTP

由于某种原因,下面的程序启动后会出现暂停。我相信这WebClient().DownloadStringTaskAsync()就是原因。

据我了解,我的程序应该立即从 0 开始计数到 ​​15。难道我做错了什么?

我对原始的 Netflix 下载示例(您使用CTP获得)遇到了同样的问题 - 在按下搜索按钮后,用户界面首先冻结 - 一段时间后,它在加载下一部电影时有响应。我相信它并没有在 Anders Hejlsberg 在 PDC 2010 上的演讲中被冻结。

还有一件事。什么时候代替

我使用自己的方法:

这是:

它可以正常工作。我的意思是它不会加载任何东西,但它会立即启动并且不会阻塞主线程,同时执行它的工作。

编辑

好的,我现在相信的是:WebClient.DownloadStringTaskAsync功能被搞砸了。它应该在没有初始阻塞期的情况下工作,如下所示:

0 投票
2 回答
8817 浏览

c# - C# 5.0 async/await 特性和 Rx - Reactive Extensions

我想知道新的 C# 5.0 异步特性对 Rx - Reactive Extensions 意味着什么?它似乎不是替代品,但它们似乎重叠 -TaskIObservable.

0 投票
3 回答
3021 浏览

c# - c# 5.0 中新的异步特性如何用 call/cc 来实现?

我一直在关注有关asyncc# 5.0 中新功能的新公告。我对延续传递风格和新的 c# 编译器对代码的转换有基本的了解,就像Eric Lippert 的帖子中的这段代码:

我知道有些语言通过 call-with-current-continuation ( callcc) 原生地实现了延续,但我并不真正理解它是如何工作的或它究竟做了什么。

所以这里的问题是:如果安德斯等人。决定咬紧牙关,只callcc在 c# 5.0 中实现而不是async/await特殊情况,上面的代码片段会是什么样子?

0 投票
3 回答
2948 浏览

c# - Agent/MailboxProcessor in C# using new async/await

This question combines two topics I don't fully understand

Reading through a paper about async in F#, I came across the topic of Agents/MailboxProcessors, which can be used to implement reactive state machines. Could the new async/await functionality in C#5 be used to implement something similar in C#, or is there already something analogue that would be better suited?

0 投票
3 回答
758 浏览

c# - 香草 .Net 4 上的 Visual Studio 异步 CTP?

按照我的理解,C# 5 CTP 中的新 Async-Await 功能应该全部在编译器中实现。这应该意味着用 CTP 编译的代码应该能够在 vanilla .Net 4 上运行?

它可以?

0 投票
3 回答
2715 浏览

c# - WCF 服务调用异步其他 WCF 服务

我读过基于任务的异步模式,听起来很棒。现在,我有一个 WCF 服务需要调用其他 WCF 服务。这些服务返回不同的结果。异步如何使用新模式调用这些服务并等待全部完成?