问题标签 [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.
c# - 返回 void 和返回 Task 有什么区别?
在查看各种 C# Async CTP 示例时,我看到一些返回void
的异步函数,以及返回非泛型的其他函数Task
。我可以看到为什么Task<MyType>
在异步操作完成时返回 a 对于将数据返回给调用者很有用,但是我见过的返回类型为Task
从不返回任何数据的函数。为什么不回来void
?
mstest - 异步 CTP v3、MS 测试和 Thread.Sleep
我有一个长时间运行的任务方法,使用睡眠
这是我的测试调用的,它工作正常
但是使用 async/await 测试直接通过
那为什么呢?
asp.net-mvc-3 - Async CTP(第 3 版)可以与 ASP 一起使用吗?MVC 3?
关于上述问题似乎存在相互矛盾的信息,但是随着 Async CTP 版本 3 的发布,MVC3 和 Async 可以共存吗?
c# - 如果可能的话,我应该省略 async / await 吗?
我有一个需要很长时间才能运行的方法:它调用数据库并同步进行某些计算:
我想为它编写一个包装器,以便能够从我的 WinForms UI 中使用“await”关键字来使用它。为此,我创建了另一个方法 MyResultAsync。我有一个选择,具体怎么写:
那么,哪个选项更可取,为什么?如您所见,区别仅在于“async”和“await”关键字的存在/不存在。
谢谢!
c# - 多项任务或 IProgress部分完成?
我正在使用分三步完成的异步操作,在完成之前返回部分结果。最初它使用事件来表示进度,我想将它正确地包装为一个await
能够操作(或它们的链)。
确切地说,它是 Windows Phone 7 中的 PhotoCamera.CaptureImage 方法,它按以下顺序触发事件(具有相关的结果类型):
CaptureStarted
,对我来说没那么有趣CaptureThumbnailAvailable
(溪流)CaptureImageAvailable
(溪流)CaptureCompleted
(布尔)
这个怎么包?目前我正在使用 a并TaskCompletionSource
调用SetResult
. CaptureCompleted
它不涉及步骤 2 和 3,缩略图和图像变得可用。我决定对那些使用回调。
我的扩展方法(为简洁起见省略代码):
这感觉并不完全干净,混合了任务和回调。我知道IProgress<T>
。但是,进度值不是统一类型(Stream、Stream、bool)......这不会把IProgress<T>
模式拉伸得太远吗?
使用Task<T>
按顺序等待的多个是一种选择,但这假设了一个特定的顺序,我也必须以某种方式强制执行。也许每个任务结果都可能包含“下一个”任务作为成员:
我仍然认为我在这里有些不合时宜。想法?
c# - 处理器数量是否会影响 ASP.NET MVC 4 Web 应用程序中异步线程的性能?
我不太擅长异步编程,所以问题可能是低级的。
我在 ASP.NET MVC 4 Dev 上使用 Async CTP 创建了如下异步方法。预览:
代码工作得很好。当我们在桌面应用程序(例如 WPF 应用程序)上运行相同的功能时,我们可以看到明显的性能差异。UI 没有被阻止,数据在可用时会立即推送到屏幕上。
但是在 Web 应用程序上,我真的看不出有什么不同。我还创建了与同步相同的功能,它们几乎相同。
我想知道的是:
- 我在具有Intel Core 2 Duo CPU T5750 2.00GHz的机器上运行此应用程序。处理器数量会影响 C# 上异步线程的性能吗?
- 从 Web 应用程序的角度来看,我在这里做错了吗?
async-ctp - C# 5.0 中的异步泛型委托
使用迭代器,以下通用委托是可能的:
使用 C# 5.0 CTP 中的新 async/await,我希望能够创建类似的委托,如下所示:
我在这方面找不到 C# 5.0 规范或任何帮助。有谁知道这是怎么写的,或者如果不能写,为什么?
谢谢!
c# - 异步编程问题
我最近发现了 CTP 异步库,我想尝试编写一个玩具程序来熟悉新概念,但是我遇到了一个问题。
我相信代码应该写出来
但事实并非如此。这是我正在运行的代码:
有任何想法吗?如果有人知道一些很好的教程和/或演示这些概念的视频,那就太棒了。
pattern-matching - “迭代”异步方法
关于异步 CTP 的一些相关问题:
我可以使用枚举器方法和枚举器方法迭代迭代器块(
IEnumerable<T>
返回收益T
)。方法的类比是什么?非调用方法如何接收和处理任何ed 项目然后?你能提供一个简短的例子吗?我只是没看到。GetEnumerator()
MoveNext()
Current()
async
async
await
ContinueWith()
此外,在以下示例
/li>async
方法中,MyAwaitable
有一个GetAwaiter()
方法。如果GetAwaiter()
返回 astring
butTHuh
is notstring
,编译器不会抱怨。THuh
和之间存在什么类型的约束/期望GetAwaiter()
?请解释 C# 规范草案的以下行。
async Task<T>
方法应该永远不会被使用return
吗?default(T)
我看到一些似乎不遵循此规则的示例 - 返回值似乎可以达到,并且该值是非默认值。这个值是不可访问的吗?如果是这样,为什么尴尬的无法访问的 return 语句?
在返回类型
Task<T>
为 some的异步函数中T
,return 语句必须具有可隐式转换为 的表达式T
,并且主体的端点必须不可到达。
- 规范说“GetAwaiter、IsCompleted、OnCompleted 和 GetResult 的所有内容都是“非阻塞”的”——那么应该以什么方法定义(可能)长时间运行的操作?
谢谢!
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。我真正想做的是拦截等待的对象,处理它们,并在稍后我控制的某个时间,以结果(x
和y
)继续继续。但我在这大步上还没有走得太远,所以我试图从小处着手。