问题标签 [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 投票
6 回答
13151 浏览

c# - Async CTP - 如何使用 async/await 调用 wcf 服务?

如果我调用 WCF 服务方法,我会执行以下操作:

我怎么能用新的asyncctp 做同样的事情?我想我需要类似proxy.DoSomethingTaskAsyncor的东西proxy.DoSomethingAsync().ToTask()?Web服务调用需要返回aTask<T>才能使用await关键字,但是如何?

0 投票
2 回答
3673 浏览

c# - 什么是异步 CTP 中的 `TaskEx.WhenAll`?

我认为 TaskEx.WhenAll 会在方法中传递的所有任务完成时返回。因此,TaskEx.WhenAll 上的 await 将返回 Return 语句的数组,这样当每个对象完成时,将返回该数组。

但事实并非如此。当我做 :

我看到我的 MessageBox 出现了不止一次,并且还等待步骤中包含 1 个元素的数组,然后是 2 个元素的数组,依此类推。

谁能告诉我 TakEx.WhenAll 的本质是什么?

0 投票
1 回答
1007 浏览

c# - 测试驱动的异步任务

我正在寻找有关该主题的一般想法和/或链接,尽管我目前的具体动机是使用 BackgroundWorker 和/或 TPL 与进度报告相关的 UI 任务。我对异步编程的经验一般是新手。我最了解的测试工具是 NUnit 和 Rhino。

一些头脑风暴的想法从我的脑海中浮现:

  1. 不要打扰 - 它太复杂了,你只需要测试 BGW 或 TPL。
  2. 做一些假的或模拟的。
  3. 使用 EventWaitHandles
0 投票
1 回答
16587 浏览

c# - task.Wait 抛出异常

主要作为这个问题测试驱动异步任务的后续行动,我提出了一些代码,如果我没有任务等待,这些代码可以工作,但如果我这样做,则会失败。

谁能解释为什么?

例外:

当代码命中由 Stephen Cleary 在他的博客上编写的实用程序类的构造函数时,我收到此错误

测试(带有 TestDriven.Net 运行器的 NUnit):

苏特:

明确一点:如果我注释掉 task.Wait,那么该测试实际上会成功。这是为什么?

加分:

我知道这在技术上是另一个问题,但重复所有这些似乎很可惜,所以:

为什么我的 MockSynchContext 在我的测试中没有在 TaskScheduler.FromCurrentSynchronizationContext() 上抛出异常,但在第二个任务中却抛出了异常?更重要的是,有没有办法传递上下文以便我可以正确地进行测试?

0 投票
2 回答
653 浏览

c# - 将 await 用于非 CPU 密集型任务

我有这样的事情:

由于我对 CPU 的影响不大,因此我不需要线程。我可以使用什么来代替 Run 来避免创建线程?

0 投票
4 回答
2091 浏览

c# - c#异步等待实现

我对 C# 即将推出的 async/await 功能的设计有些怀疑。

  1. 附加新机制的便利性Task<T>
  2. 我认为最好使用 async 代替 await 关键字。解释:var result = async GetResultAsync();
  3. 使用令牌取消正在进行的异步操作的机制并不像我认为的那样优雅。

Async/away 是一个很棒的特性,但我认为它的设计不如 LINQ。另外,我觉得设计团队对当前的设计非常满意。并且可能不会考虑社区反馈。

你怎么看?

0 投票
2 回答
4909 浏览

c# - async/await 取消机制

我有一个关于可以使用什么机制来取消正在进行的异步操作的问题,而不是 async/await 上下文中的取消令牌。我确信这是一个经过充分研究的设计决策,它考虑了语言的命令性质,但在实际情况下,必须将取消对象传递给所有异步方法,至少有点痛苦。c#社区还有另一种设计思路,还是提议的取消机制就好了?我想我错过了一些东西。

0 投票
3 回答
2256 浏览

c# - 如何为异步等待调用创建包装器?

ConnectAsync据我所知,没有对/ AcceptAsync/ SendAsync/等的内置(或框架扩展)支持ReceiveAsync。我将如何编写自己的包装器来支持异步等待机制。例如,我当前的代码同时处理ReceiveAsyn内联和回调(在 中指定SocketAsyncEventArgs):

.

0 投票
9 回答
82274 浏览

c# - 是否可以“等待收益返回 DoSomethingAsync()”

常规迭代器块(即“yield return”)是否与“async”和“await”不兼容?

这很好地了解了我正在尝试做的事情:

但是,我收到一个编译器错误,引用“无法从资源加载消息字符串”。

这是另一个尝试:

但同样,编译器返回错误:“无法从资源加载消息字符串”。


这是我项目中的真实编程代码

当我有一个列表任务时,这非常有用,该任务可以从 URL 下载 HTML,我使用语法“yield return await task”,结果就是我想要的IEnumerable<Foo>。我不想写这段代码:

但似乎我必须这样做。

谢谢你的帮助。

0 投票
26 回答
474594 浏览

c# - 我将如何运行异步任务方法同步?

我正在学习异步/等待,并遇到了需要同步调用异步方法的情况。我怎样才能做到这一点?

异步方法:

正常使用:

我尝试过使用以下内容:

我也从这里尝试了一个建议,但是当调度程序处于暂停状态时它不起作用。

这是调用的异常和堆栈跟踪RunSynchronously

System.InvalidOperationException

消息:不能在未绑定到委托的任务上调用 RunSynchronously。

内部异常:空

来源:mscorlib

堆栈跟踪