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

c# - 异步/等待 - 它是*并发*吗?

我一直在考虑 C# 5 中的新异步内容,并提出了一个特殊问题。

我知道await关键字是一个简洁的编译器技巧/语法糖来实现连续传递,其中方法的其余部分被分解为Task对象并排队按顺序运行,但控制权返回给调用方法。

我的问题是我听说目前这一切都在一个线程上。这是否意味着这种异步内容实际上只是将延续代码转换为Task对象,然后Application.DoEvents()在每个任务完成后调用,然后再开始下一个任务的一种方式?

还是我错过了什么?(这部分问题是修辞性的——我完全知道我遗漏了一些东西:))

0 投票
3 回答
3055 浏览

c# - async/await, TaskEx.WhenAll and exceptions

This is just an imaginary problem, I'm hoping that the solution will help in whole range of similar scenarios. Suppose I need to count total size of all external resources on a webpage (images, scripts etc.). I download the page, extract all SRC information and transform the URL list into download tasks:

Now, if one of the links is unreachable for any reason, the whole TaskEx.WhenAll is aborted with WebException. What I need is to ignore any WebExceptions inside individual tasks and assume length of 0 in that case. Any ideas?

0 投票
11 回答
13380 浏览

javascript - Web 浏览器或 node.js 中的异步/等待?

是否有任何尝试将C# 5.0 中的async/await功能引入任何可以编译为 JavaScript 的语言(例如 CoffeScript)?(所以它可以在 Web 浏览器或 node.js 中使用。)

0 投票
2 回答
1688 浏览

c# - C# 5 中新的 async/await 特性如何与消息循环集成?

我还没有机会查看新的 C# async/await 功能的 CTP,但我想知道以下几点:

它如何与消息循环集成?我假设在标准的 Windows 应用程序(Winforms,WPF)中,通过使用Dispatcher或类似方法向应用程序的消息循环发送消息来调用延续?

如果我没有使用标准的 Windows 消息循环怎么办?例如,在 GTK# 应用程序或控制台应用程序中(如果此功能确实可以在控制台应用程序中使用)。

我在互联网上搜索了有关此的信息,但无济于事。谁能解释一下?

0 投票
3 回答
1175 浏览

c# - PostSubmitter 的异步 CTP

我正在尝试使用 Async CTP 构建 REST 客户端。我是 CTP 的新手,因此,在浏览了互联网上的许多示例之后,我得到了一个专为发布(GET 或 POST)而构建的类。这是到目前为止的课程:

这就是我使用它的方式:

行为并不像预期的那样。行TextResponse.Text += Task.Factory.StartNew(() => PostSomeData().Wait());whiz-by 我没有例外,这是生成的字符串:

开始... System.Threading.Tasks.Task 功能完成!功能结束!

现在,如果我使用 POST,我会在上述之后得到一个异常。深入研究异常会发现500 内部服务器错误

但是,如果我使用 GET,则不会发生任何事情。没有例外,最终结果相同。

我在 PostSubmitter 类中做错了吗?

这是带有参数的 UI 截图: 用户界面屏幕截图

问候。

更新 #1 我也修改了 UI 上的点击事件。然而

  • 它仅在 PostType 为GET时有效。POST 不工作。
  • UI在操作持续期间挂起

修改:

0 投票
1 回答
518 浏览

winforms - 具有取消支持 (CancellationTokenSource) 和进度报告的 PostSubmitter 的异步 CTP

开发人员!

我有一个使用 POST 或 GET 发布到网站并阅读响应的课程。现在都是异步的,不会导致 UI 挂起。

我现在需要升级它以处理取消。正在使用的所有异步方法都不接受取消令牌。我需要了解为什么以及我的替代方案是什么。如果可能的话,我应该在类中创建 CancellationTokenSource 对象还是从 UI 对其进行参数化?

其次,我需要暴露 PostData() 方法的进度。我该怎么做?

班上:

注意:最后有三种方法用于文件上传。我仍然需要弄清楚,在我这样做之前,我需要了解取消和进度报告。

相关问题Async CTP for a PostSubmitter

任何帮助将非常感激。

0 投票
3 回答
231 浏览

c# - 可以使用多线程改进此代码吗?

我有一个简单的 Windows 服务,每天只运行一次。它在数据库中执行一些查询,生成适当的 html 内容(表格、div、...)并将其以电子邮件正文的形式发送给多个收件人。

电子邮件的正文是这样创建的:

所有GenerateHTMLContent方法都几乎相同——它们在我的数据库中执行查询,在 HTMLTextWriter 的帮助下构建一个 HTML 表,然后将表作为字符串返回。

可以使用多线程或异步等待模式来改进此代码吗?有问题的代码是我将行附加到 StringBuilder 对象的位置。

编辑:我问这个问题是因为我以前从未使用过多线程,只是想知道它是否可能。此外,该程序现在运行得足够快。

0 投票
10 回答
44165 浏览

c# - 等待基于任务的队列

我想知道是否存在ConcurrentQueue的实现/包装器,类似于BlockingCollection,其中从集合中获取不会阻塞,而是异步的,并且会导致异步等待,直到将项目放入队列中。

我提出了自己的实现,但它似乎没有按预期执行。我想知道我是否正在重新发明已经存在的东西。

这是我的实现:

0 投票
1 回答
1021 浏览

c# - 首次调用可等待异步函数是同步的,原因不明

我目前正在使用 WPF 4.5 和 Visual Studio 11 开发人员预览版。我正在使用 async-await 东西在应用程序事件处理程序中异步执行 http requets。问题是第一次调用 await-able 方法会挂起应用程序线程,直到它完成。所有后续调用都可以,即在执行它们时应用程序仍然可用。

这是我的代码(仅有意义的摘录):

XAML

C#代码隐藏:

来自前一段代码的可等待调用源:

当我在 ...await httpClient.PostAsync... 行之后调试和设置断点时,我发现在处理请求期间(大约 2 秒),确实是这个调用挂起了我的应用程序。但是,如果我将断点放在等待调用的行上,它会在自动完成文本框的填充开始后立即发生。至少在我的代码中,两者之间没有任何内容,这就是为什么我假设它对 httpClient 的等待调用会使我的应用程序挂起。

你能指出这段代码中导致这种奇怪行为的一些问题吗?

0 投票
3 回答
10971 浏览

c# - 异步/等待未按预期反应

使用下面的代码,我希望字符串“Finished”出现在控制台上的“Ready”之前。谁能向我解释一下,为什么 await 不会等待完成此示例中的任务?