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

c# - 如何编写简单的异步方法?

使用带有 async/await 关键字的最新 CTP5,我编写了一些代码,显然无法编译:

“'await' 运算符只能在标有 'async' 修饰符错误的方法或 lambda 中使用?”的原因是什么?(我选择了 Visual Studio 指向我的行)

0 投票
3 回答
2489 浏览

c# - 没有 TaskCompletionSource 的任务链?

我正在将一些 async/await 代码转换为链式任务,因此我可以在已发布的框架中使用它。等待代码看起来像这样

在哪里

我希望链接InvokeMemorize返回由 产生的任务Memorize,但这会导致Task<Task<TraumMessage>. 我最终得到的解决方案是TaskCompletionSource<TraumMessage>我的信号:

有没有办法做到这一点TaskCompletionSource

0 投票
1 回答
1083 浏览

silverlight-4.0 - webClient.DownloadStringTaskAsync().Wait() 冻结 UI

我正在使用 silverlight 4 和新的异步 CTP。

此代码会导致 UI 冻结。
另一方面,这段代码工作正常:

两者有什么区别,是什么导致第一个冻结?

0 投票
3 回答
17406 浏览

c# - 如何使任务可等待

昨天我开始使用 Microsoft CTP 异步库,但在任何地方我都找不到等待任务的正确实现。我知道它必须有这样的实现?:

但是我现在如何实现一个任务,比如说,等待 5 秒,然后返回一些字符串,例如“Hello World”?

一种方法是直接使用 Task ,如下所示:

但是我将如何使用等待的实现来做到这一点?还是我只是误解了一切?

感谢您提供任何信息/帮助:)

0 投票
2 回答
4953 浏览

c# - C# Async CTP 中的“等待”线程会发生什么?

我一直在阅读新的 asyncawait关键字,这听起来很棒,但是在我迄今为止看过的任何介绍视频中,我都无法找到一个关键问题的答案(我还阅读了白皮书一会儿回来)。

await假设我在主 UI 线程上的嵌套函数中有一个调用。此时线程会发生什么?控制是否返回到消息循环并且 UI 线程可以自由处理其他输入?

当等待的任务完成时,整个堆栈是否被推送到消息队列中,以便控制将通过每个嵌套函数返回,或者这里完全发生了其他事情?

其次(虽然我引起了你的注意),但我真的不明白为什么异步方法需要用async. 不能异步执行任何方法吗?如果我想异步执行一个方法但它没有 async 关键字怎么办——有没有办法简单地做到这一点?

干杯。:)

编辑: 诚然,如果我可以编译示例代码,我可能会自己弄清楚,但由于某种原因,我在那里遇到了障碍。我真正想知道的是延续在多大程度上继续......它是冻结整个调用堆栈,在任务完成时恢复它,还是只返回这么远?是否需要将函数本身标记为异步以支持继续,或者(正如我最初问的那样)它是否继续整个调用堆栈?

如果它没有冻结整个调用堆栈,那么当异步等待遇到非异步调用函数时会发生什么?它在那里阻塞吗?这不会破坏等待的意义吗?我希望您能看到我在这里遗漏了一些理解,希望有人可以填写,以便我可以继续学习。

0 投票
2 回答
937 浏览

c# - C# async CTP - 如何在不引发 TaskCanceledException 的情况下将异步任务标记为已取消?

我有一个简短的异步任务,它开始后经常需要取消。“任务”类有一个 IsCanceled 指示器,我认为可以方便地使用它来指示异步任务在没有运行完成的情况下被取消,但据我所知,将异步任务标记为已取消的唯一方法是在异步函数中抛出 TaskCanceledException。定期抛出异常以指示异常发生的情况,这与我对应该使用异常的理解背道而驰。有谁知道一种更好的方法来指示异步任务在预期频繁发生时被取消?

我的下一个最佳选择是返回一个具有自己的 IsCanceled 属性的结构:

(为了简洁起见,我忽略了一些好的编码和风格实践)

但这似乎多余且难以使用。更不用说它引入了一致性问题,因为会有两个 IsCanceled(一个在 Task 中,一个在 MightBeCanceled 中)。

0 投票
2 回答
3642 浏览

c# - 异步 CTP,单元测试 ViewModel 的异步方法

我有一个单元测试(使用 MSTest),如下所示:

Run 是一个返回 void 的异步方法。

假设是这样Run实现的:

myAsyncModelClass.LongRunningOperation(), 本身是一个异步方法,它返回一些Task<T>T 是我的 ViewModel 感兴趣的结果。

我的问题是我的测试正在异步运行该方法,因此在方法完成Run之前调用了我的断言。Run奇怪的是,当我放置断点时,b/c 永远不会到达 finally 块,因为断言失败。如何保持Run方法同步以便能够对其进行单元测试?

我也有一个单元测试myAsyncModelClass.LongRunningOperation(),但我只是调用,Task<T>.Wait()因为它返回一个任务。这使得它在单元测试时同步。

另外,我想提一下,Run()它是由 MVVM 框架神奇地由 ICommand 调用的。 void可能是也可能不是需要返回类型,我将不得不尝试一下。

0 投票
3 回答
1682 浏览

c# - 使用 C# 的新异步功能等待网络数据包的最佳方式是什么

我最近一直在玩新的 Async CTP,但我遇到了一种情况,我不确定如何进行。

在我当前的代码库中,我使用了“工作”和“工作管理器”的概念。作业的存在仅用于处理初始消息、发送响应,然后等待响应。

我已经有基于同步套接字的现有代码,其中网络线程正在等待数据到达,然后将其传递给事件处理程序,最终传递给作业管理器。

作业管理器查找将处理该消息的作业,并将其传递。

所以场景是这样的:

  1. 作业经理收到新消息并启动作业。
  2. 作业启动、处理消息并发送回复消息。
  3. 此时,作业将等待对答复的响应。

这是一个伪代码示例:

但我不完全确定如何在第 3 步继续。作业管理器将获得响应,然后将其交给正在运行的作业。但我不确定如何让工作等待响应。

我考虑过创建一个等待的任务,它只是阻塞在 WaitHandle 上,但这是最好的解决方案吗?

在这种情况下,我还能做些什么吗?

编辑 关于异步 CTP 的主题,在不使用 UI 的情况下会发生什么。我已经阅读了 Eric Lippert 的 Async 博客,但我不相信它曾经触及过在没有 UI 线程的情况下一切如何在后台工作的主题(它是从后台工作人员分离出来还是......?)

0 投票
1 回答
356 浏览

azure - 异步 CTP 和 Windows Azure 支持

快速的问题,无法通过谷歌找到答案......

Windows Azure 平台是否支持异步 CTP?

是复制参考的问题吗?

0 投票
1 回答
474 浏览

.net - 突然 VB.Net 迭代器函数无法编译?

几个月来,使用 Async CTP 成功编译了以下内容:

突然之间,情况不再如此。Visual Studio 似乎不再识别语法并使用“预期语句结束”来标记函数。

最近,我的机器在打开 Visual Studio 的情况下一直开机(我感到羞耻),它自动关闭以安装一些 Winows 更新。从那时起,我一直无法编译解决方案。截至 2 周前,我查看了我的解决方案的备份副本,以确保我没有搞砸什么并且我看到了同样的问题。

我也尝试卸载并重新安装 .Net Framework Async CTP。

据我所知,最近,我收到了几个 >net Framework 4 更新和安全更新。

我希望其他人能够对此有所了解,并为我节省在 MS 电话上浪费的一天。