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

c# - 返回 void 和返回 Task 有什么区别?

在查看各种 C# Async CTP 示例时,我看到一些返回void的异步函数,以及返回非泛型的其他函数Task。我可以看到为什么Task<MyType>在异步操作完成时返回 a 对于将数据返回给调用者很有用,但是我见过的返回类型为Task从不返回任何数据的函数。为什么不回来void

0 投票
1 回答
1138 浏览

mstest - 异步 CTP v3、MS 测试和 Thread.Sleep

我有一个长时间运行的任务方法,使用睡眠

这是我的测试调用的,它工作正常

但是使用 async/await 测试直接通过

那为什么呢?

0 投票
0 回答
113 浏览

asp.net-mvc-3 - Async CTP(第 3 版)可以与 ASP 一起使用吗?MVC 3?

关于上述问题似乎存在相互矛盾的信息,但是随着 Async CTP 版本 3 的发布,MVC3 和 Async 可以共存吗?

0 投票
2 回答
856 浏览

c# - 如果可能的话,我应该省略 async / await 吗?

我有一个需要很长时间才能运行的方法:它调用数据库并同步进行某些计算:

我想为它编写一个包装器,以便能够从我的 WinForms UI 中使用“await”关键字来使用它。为此,我创建了另一个方法 MyResultAsync。我有一个选择,具体怎么写:

那么,哪个选项更可取,为什么?如您所见,区别仅在于“async”和“await”关键字的存在/不存在。

谢谢!

0 投票
1 回答
952 浏览

c# - 多项任务或 IProgress部分完成?

我正在使用分三步完成的异步操作,在完成之前返回部分结果。最初它使用事件来表示进度,我想将它正确地包装为一个await能够操作(或它们的链)。

确切地说,它是 Windows Phone 7 中的 PhotoCamera.CaptureImage 方法,它按以下顺序触发事件(具有相关的结果类型):

  1. CaptureStarted,对我来说没那么有趣
  2. CaptureThumbnailAvailable(溪流)
  3. CaptureImageAvailable(溪流)
  4. CaptureCompleted(布尔)

这个怎么包?目前我正在使用 a并TaskCompletionSource调用SetResult. CaptureCompleted它不涉及步骤 2 和 3,缩略图和图像变得可用。我决定对那些使用回调。

我的扩展方法(为简洁起见省略代码):

这感觉并不完全干净,混合了任务和回调。我知道IProgress<T>。但是,进度值不是统一类型(Stream、Stream、bool)......这不会把IProgress<T>模式拉伸得太远吗?

使用Task<T>按顺序等待的多个是一种选择,但这假设了一个特定的顺序,我也必须以某种方式强制执行。也许每个任务结果都可能包含“下一个”任务作为成员:

我仍然认为我在这里有些不合时宜。想法?

0 投票
2 回答
508 浏览

c# - 处理器数量是否会影响 ASP.NET MVC 4 Web 应用程序中异步线程的性能?

我不太擅长异步编程,所以问题可能是低级的。

我在 ASP.NET MVC 4 Dev 上使用 Async CTP 创建了如下异步方法。预览:

代码工作得很好。当我们在桌面应用程序(例如 WPF 应用程序)上运行相同的功能时,我们可以看到明显的性能差异。UI 没有被阻止,数据在可用时会立即推送到屏幕上。

但是在 Web 应用程序上,我真的看不出有什么不同。我还创建了与同步相同的功能,它们几乎相同。

我想知道的是:

  1. 我在具有Intel Core 2 Duo CPU T5750 2.00GHz的机器上运行此应用程序。处理器数量会影响 C# 上异步线程的性能吗?
  2. 从 Web 应用程序的角度来看,我在这里做错了吗?
0 投票
1 回答
2181 浏览

async-ctp - C# 5.0 中的异步泛型委托

使用迭代器,以下通用委托是可能的:

使用 C# 5.0 CTP 中的新 async/await,我希望能够创建类似的委托,如下所示:

我在这方面找不到 C# 5.0 规范或任何帮助。有谁知道这是怎么写的,或者如果不能写,为什么?

谢谢!

0 投票
2 回答
256 浏览

c# - 异步编程问题

我最近发现了 CTP 异步库,我想尝试编写一个玩具程序来熟悉新概念,但是我遇到了一个问题。

我相信代码应该写出来

但事实并非如此。这是我正在运行的代码:

有任何想法吗?如果有人知道一些很好的教程和/或演示这些概念的视频,那就太棒了。

0 投票
2 回答
620 浏览

pattern-matching - “迭代”异步方法

关于异步 CTP 的一些相关问题:

  • 我可以使用枚举器方法和枚举器方法迭代迭代器块(IEnumerable<T>返回收益T)。方法的类比是什么?非调用方法如何接收和处理任何ed 项目然后?你能提供一个简短的例子吗?我只是没看到。GetEnumerator()MoveNext()Current()asyncasyncawaitContinueWith()

  • 此外,在以下示例async方法中,MyAwaitable有一个GetAwaiter()方法。如果GetAwaiter()返回 a stringbut THuhis not string,编译器不会抱怨。THuh和之间存在什么类型的约束/期望GetAwaiter()

    /li>
  • 请解释 C# 规范草案的以下行。async Task<T>方法应该永远不会被使用return吗?default(T)我看到一些似乎不遵循此规则的示例 - 返回值似乎可以达到,并且该值是非默认值。这个值是不可访问的吗?如果是这样,为什么尴尬的无法访问的 return 语句?

在返回类型Task<T>为 some的异步函数中T,return 语句必须具有可隐式转换为 的表达式T,并且主体的端点必须不可到达。

  • 规范说“GetAwaiter、IsCompleted、OnCompleted 和 GetResult 的所有内容都是“非阻塞”的”——那么应该以什么方法定义(可能)长时间运行的操作?

谢谢!

0 投票
4 回答
18944 浏览

c# - 从非异步方法调用异步方法

我尝试的以下代码的每个变体都不起作用 - 无论是DoSomething() : void和被称为书面,还是DoSomething() : Task被调用TaskEx.RunEx(),一些尝试涉及.GetAwaiter().GetResult(). 看到的错误包括:"Start may not be called on a task with null action""RunSynchronously may not be called on a task unbound to a delegate""The task has not yet completed"

输出:

开始做某事...

按任意键退出。

PrepareAwaitable'sTask后面Action会更复杂。当此操作完成时,无论花费多长时间,我都希望Task(或其他框架机制)通过分配给 x 来恢复"Howdy ...",然后再分配给 y。我真正想做的是拦截等待的对象,处理它们,并在稍后我控制的某个时间,以结果(xy)继续继续。但我在这大步上还没有走得太远,所以我试图从小处着手。