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

.net - 将重要代码转换为新的 .NET 异步模式 - 如何处理 yield 循环

我正在编写一个库来使用 Azure 表存储。基本模式是给定的 HTTP 请求在内容流中返回一个数字结果,并在标头中返回一个指向下一组结果的指针。当从流中读取结果时,就会产生结果。我正在使用 System.Net.Http 库(以前的 Microsoft.Net.Http),它在最新版本中删除了同步版本的 HttpClient.Send 和其他同步方法。新版本使用任务。我以前用过Tasks,但不是为了这么复杂的东西,而且我很难开始。

已转换为异步模式的调用是:HttpClient.Send、response.Context.ContentReadSteam。我已经清理了代码,以便显示重要部分。

下面是我成功转换的一个示例。

有人对如何将循环/产量转换为新模式有任何建议吗?

谢谢!埃里克

0 投票
1 回答
685 浏览

.net - 从方法返回 BlockingCollection 作为 IEnumerable

我正在尝试从 BlockingCollection 支持的方法返回 IEnumerable。代码模式是:

问题是从 Execute() 返回的可枚举总是空的。我见过的所有示例都在任务中迭代 BlockingCollection。在这种情况下,这似乎行不通。

有谁知道我哪里出错了?


为了让事情更清楚一点,我粘贴了我正在执行以填充集合的代码。也许这里有什么导致问题的原因?

0 投票
1 回答
290 浏览

c# - ASP.NET MVC 4 Beta 与异步 CTP(版本 3)并排

我首先安装了 Async CTP(版本 3),然后安装了 ASP.NET MVC 4 Beta。但是,我不能使用 async 关键字。

有没有兼容性问题?

对于 ASP .NET MVC 3,这里也有一个类似的问题(在撰写本文时还没有答案)。

编辑:在我安装其中任何一个之前,异步/等待关键字可能会被破坏。(我还在调查中。)

0 投票
1 回答
323 浏览

c# - 应用墓碑时优雅地处理后台任务

我正在使用异步 ctp 并且有一个在后台运行的任务。它工作得很好,但在运行并且应用程序被墓碑化时会引发异常。该异常与数据库上下文为空有关。

文档说:

当应用程序被墓碑化时,底层数据库连接将关闭。要在墓碑化后返回到之前的状态,应用程序需要重做它在墓碑化之前执行的所有查询。

我试过使用cancellationtokesource,但这似乎不起作用,因为连接已经关闭。知道如何处理这样的事情吗?

0 投票
3 回答
15397 浏览

c# - 为什么使用异步请求而不是使用更大的线程池?

在荷兰的 Techdays 期间,Steve Sanderson 做了一个关于C#5、ASP.NET MVC 4 和异步 Web的演讲。

他解释说,当请求需要很长时间才能完成时,线程池中的所有线程都会变得忙碌,新的请求必须等待。服务器无法处理负载,一切都变慢了。

然后他展示了使用异步 webrequests 如何提高性能,因为工作随后被委托给另一个线程,并且线程池可以快速响应新的传入请求。他甚至对此进行了演示,并显示 50 个并发请求首先需要 50 * 1 秒,但异步行为总共只需要 1.2 秒。

但是看到这个之后,我仍然有一些疑问。

  1. 为什么我们不能只使用更大的线程池?是不是使用 async/await 来更慢地启动另一个线程,然后从一开始就增加线程池?是不是我们运行的服务器突然多了线程之类的?

  2. 来自用户的请求仍在等待异步线程完成。如果池中的线程正在做其他事情,“UI”线程如何保持忙碌?Steve 提到了“一个知道某事何时完成的智能内核”。这是如何运作的?

0 投票
2 回答
1536 浏览

c# - 异步等待关键字错误

我添加了 AsyncCtpLibrary v.3。从异步网页中获取了一些示例代码。把它包裹在一个 TestFixture 中来玩。

我收到错误:任何想法为什么?

错误 1 ​​- 类、结构或接口成员声明中的标记“void”无效

错误 2 - ; 预期的

代码:

0 投票
2 回答
1541 浏览

.net - 如何在异步方法中测试异常

我正在使用 Visual Studio 11 Beta。

鉴于此代码:

由于它是一种异步方法,因此异常似乎不会冒泡到调用方法。我有因此失败的测试用例:

在这种情况下,ExecuteNonQuery 的验证部分显然会抛出异常,我在调试时看到它抛出异常。

我已将测试方法更改为 async 并将语法更改为await Task.Run(() => Target.ExecuteNonQuery()),但无济于事。

问题:

  • ExecuteNonQuery 是否完全抛出异常?
  • 为什么 ExecuteNonQueryFail1 没有看到异常?
  • 如何更改测试方法或方法本身,以正确处理异常并通过测试用例,而不放弃方法的异步性质?
0 投票
2 回答
3651 浏览

c# - 使用异步 CTP 在单个函数中异步 HTTP 发布数据

我正在尝试使用 Async CTP 构建运行异步并返回值的单个函数。

这是我的示例代码。我不知道为什么它在返回时不填充“resp”变量。

我也试过了,但程序冻结了(什么也不做,不仅仅是一会儿)。也许任何更正都会有所帮助。

0 投票
2 回答
406 浏览

c# - 返回值时异步 CTP 方法冻结

我试图创建一个返回值的异步方法。使用该方法而不返回时一切正常。可以处理数据,但是添加return子句时出现问题。程序完全冻结没有任何错误或一段时间。

请看代码:

0 投票
4 回答
2647 浏览

c# - VS11 中的 WebClient.DownloadStringTaskAsync(Uri,CancellationToken) 在哪里

在异步 CTP 中有一个带有签名的扩展方法

这是在VS11中的什么地方?
我是否需要安装 Async CTP 才能使用此方法?