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

async-await - 在服务器端使用 await

我知道在处理 UI 时,异步库使异步实现非常容易。但是我看不到它可以提高性能的任何服务器端用法。在哪些服务器端场景中可以使用 await 来提高性能?

0 投票
4 回答
127600 浏览

c# - WaitAll 与 WhenAll

Task.WaitAll()Async CTP和Async CTP有什么区别Task.WhenAll()?您能否提供一些示例代码来说明不同的用例?

0 投票
1 回答
1180 浏览

c# - 如何编写 C# 5 异步?

我有以下场景:
当输入命令时(为了测试,它是一个控制台应用程序,当它准备好时,我希望它是一个 WebService)我执行一些代码,当需要进一步的用户输入时,我返回到命令立即翻译。当给出新的输入时,我希望处理从我离开的地方恢复。这听起来很像 c#5 async-await 模式,所以我决定试一试。我在想这个:

现在我的问题是,如何编写 MySettings.Calculate 和 MySettings.UseThis?如何从第一个返回任务以及如何从第二个发出准备就绪信号?我已经为 Task 尝试了许多工厂方法,但我找不到合适的方法!请帮忙!

0 投票
3 回答
4625 浏览

c# - 有没有办法使用任务作为未来值 T 的等待句柄?

我想使用方法中的 Task return 在稍后可用时返回该值,以便调用者可以使用 Wait 阻止或附加延续,甚至等待它。我能想到的最好的是:

主要问题是 mre.WaitOne() 被阻塞,所以我假设每次调用 GetTask() 都会安排一个新线程来阻塞。有没有办法以异步方式等待 WaitHandle 或者已经有一个帮助器来构建等效功能?

编辑:好的,TaskCompletionSource 是我正在寻找的东西,我只是让自己的生活变得艰难吗?

0 投票
3 回答
2587 浏览

c# - await 立即移动到下一条语句

我正在使用新的 Async CTP 位,我无法让它与服务器端或命令行程序一起工作(所有示例都是 WPF 或 Silverlight)。例如,一些琐碎的代码,如:

立即返回并打印System.Threading.Tasks.Task1[System.Int32]` 而不是等待 10 秒并返回 7(如我所料)。一定是我想念的明显东西。

0 投票
2 回答
295 浏览

asynchronous - 关于 .Net Tasks 和 Async CTP 的问题

我正在试验 Async CTP 并且非常喜欢它。然而,我确实有一个来自白皮书的问题来解释它。其中,它说:

重要的是要了解异步方法(如白皮书中列出的示例方法)不会在它们自己的线程上运行。

如果它们不在自己的线程上运行,那么异步行为如何工作?在(比如)UI 和“await”关键字创建的任务之间的现有线程上是否有很多上下文切换?

0 投票
2 回答
37845 浏览

c# - 错误:“不能在没有主体的方法上使用‘异步’”。如何强制异步子覆盖?

我正在开发一个系统,在该系统中,期望多个客户端对象通过接口实现特定功能,并且我希望该功能与延续异步运行(我希望实现是 I/O 绑定的并且想要确保所有客户端对象尽快完成此功能)。我正在使用 Visual Studio Async CTP Refresh for SP1,使用 C#“5.0”。

在我的抽象类的子对象中强制执行异步行为的推荐做法是什么(见下文)?我不能(显然)使用虚拟方法方法强制使用“异步”方法。我只能要求一个“任务”返回类型。这是否意味着我不应该尝试在子对象中要求异步行为?在那种情况下,返回类型是否应该只是“void”?

公共接口是目前系统设计的一个不幸结果,但这是一个单独的问题。显然,我不能限制任何绕过“BaseFoo”并只实现“IFoo”接口的异步。

这是代码:

0 投票
3 回答
1086 浏览

async-await - C#5 AsyncCtp BadImageFormatException

请帮我解决这个问题,我一直在使用 AsyncCtpLibrary 和 C#5 ctp 编译器编写控制台应用程序。我第一次实际运行等待的代码时,我得到了这个:

我是否缺少要引用的 dll?

重要的新东西
我的失败方法如下所示:

我遵循 Jon Skeet 的建议,试图一点一点地重现错误,现在我可以说 await base.Execute() 行是杀手!如果我注释掉那条线,一切都会运行,如果我把它留在里面,调用我的方法会立即失败(不是在到达 base.Execute() 时)。所以我假设 ctp 编译器做了一些奇怪的事情。为什么?我永远不应该做什么?虫子有多大?

老东西:

编辑:
至于 32 位/64 位问题,我的系统是 32 位(在虚拟机内,请注意),据我所知 AsyncCtpLibrary.dll 不包含非托管代码。我所有的项目(类库和单个控制台应用程序)都有这样的构建选项卡:截屏
还有什么可能是错误的?


编辑:我还检查了Fusion 日志查看器,加载 AsyncCtpLibrary 时没有任何错误:

我还检查了编译器生成的类的 MoveNext() 方法的IL 代码<Execute>d__1c,它引用的唯一程序集 ([assemblyName]) 是 mscorlib、System.Core 和 AsyncCtpLibrary。


我检查了我的 dll 和 AsyncCtpLibrary的清单.corflags 0x00000003 // ILONLY 32BITREQUIRED,我说,AsyncCtpLibrary 说.corflags 0x00000009 // ILONLY,我不确定这是否是问题所在。

请帮忙,我没有想法!

0 投票
2 回答
13953 浏览

c# - 使用 void 处理异步异常

我正在使用 Async CTP 编写一个 IO 繁重的控制台应用程序。但是我遇到了异常问题。

并发生以下情况:“完成”被写入控制台,然后我在调试器中得到异常,然后我按 continue my program exists
是什么赋予了?

0 投票
1 回答
7234 浏览

c# - Try-Catch 异步异常

这个例子“失败”:

也就是说,文本“失败”的异常会冒泡。

然后我尝试了这个解决方法:

那也没有帮助。

我想我的异步 CTP 刷新安装可能会被冲洗掉。

这段代码是否应该按我的预期工作(“成功”冒泡,而不是“失败”),或者这不是“应该”以这种方式工作。如果没有,您将如何解决它?