Tag: async ctp

如何并行正确运行多个异步任务?

如果您需要并行运行多个异步I / O任务但需要确保不会同时运行多个XI / O进程,该怎么办? I / O处理前后的任务不应该有这样的限制。 这是一个场景 – 假设有1000个任务; 每个人都接受一个文本字符串作为输入参数; 转换该文本(预I / O处理)然后将转换后的文本写入文件。 目标是使预处理逻辑利用100%的CPU /内核和任务的I / O部分以最大10度的并行性运行(同时打开最多10个用于一次写入文件)。 你能提供一个示例代码如何使用C#/ .NET 4.5吗? http://blogs.msdn.com/b/csharpfaq/archive/2012/01/23/using-async-for-file-access-alan-berman.aspx

在另一个线程中运行异步函数

我正在评估Async CTP。 如何在另一个线程池的线程上开始执行异步函数? static async Task Test() { // Do something, await something } static void Main( string[] args ) { // Is there more elegant way to write the line below? var t = TaskEx.Run( () => Test().Wait() ); // Doing much more in this same thread t.Wait(); // Waiting for much more then […]

等待/异步与“经典”异步(回调)

所以新的异步CTP非常酷; 它使我的生活变得更加容易,不必编写命名的回调方法,并使方法的意图更加清晰。 现在我已经开始玩了一下,我想知道async / await和“经典”异步回调语法之间可能存在什么差异。 这里有一些我想到的问题,但是还有很多其他我现在都不会想到的,可能会在以后。 是否有人提供优于另一个的优越表现? 一个比另一个更大的开销是否存在? 哪个在高性能环境中使用会更好?

等待方法中的取消令牌

将令牌放在任务的构造函数中有很多理由,这里提到: Task构造函数中的取消令牌:为什么? 使用关键字,async / await,这是如何工作的? 例如我的代码如下: public async Task MethodAsync(CancellationToken token) { await Method01Async(); await Method02Async(); } 虽然它是一个异步过程。 我很快就使用了“Task.StartNext”或“Task.Run”或“new Task”。 为了能够指定我的取消令牌,我该怎么办?

如何在Visual Studio 2010和.NET 4.0中使用异步?

我想为当前的VS 2010 .NET 4.0 C#项目添加异步支持 我已经找到: Visual Studio异步CTP – http://www.microsoft.com/en-us/download/details.aspx?id=9983 Microsoft.Bcl.Async – https://nuget.org/packages/Microsoft.Bcl.Async 我甚至没有真正区别他们。 我安装了两个。 Visual Studio异步CTP(版本3),Microsoft.Bcl和Microsoft.Bcl.Async。 (也用于在Microsoft.Bcl中运行tools\portable-net40+sl4+win8+wp71\install.ps1 ) 而且还是看不出任何效果。 同样的错误 public async Task – > Error 37 The type or namespace name ‘async’ could not be found (are you missing a using directive or an assembly reference?) 那真的是我应该如何使用这些东西?

可以从TPL任务派生从方法返回更多细节吗?

我的原始方法如下: string DoSomeWork(); 方法DoSomeWork在其他线程上启动一些工作并返回执行ID(只是随机字符串)。 稍后我可以通过给定的执行ID查询结果。 重点是在作业完成之前使执行ID可用。 现在我想更改签名以返回Task,因此用户可以等待。 Task DoSomeWork(); 同时我仍然需要返回执行ID(例如用于跟踪),我看到几个选项。 首先,如果out参数,第二个是返回带有执行ID和任务的元组(在C#中,这看起来不是最佳选项),第三个是我实际想要问的。 如果我将创建将派生自Task类的类,该怎么办: public class ExtendedTask : Task { public string ExecutionID {get; set;} } 这看起来不错吗? 或者最好决定其他选择? PS在BCL中有一些派生自Task类。 更新 ,似乎我无法定义这个明确的enouthg。 但是我需要在作业完成之前访问ExecutionID,因此我不能使用Task.Result 。

在C#Async CTP中`等待’线程会发生什么?

我一直在阅读关于新的async await关键字,它听起来很棒,但有一个关键问题我在目前为止看过的任何一个介绍video中都找不到答案(我也读过白皮书一会儿)。 假设我在主UI线程上的嵌套函数中调用了await 。 此时线程会发生什么? 控件是否返回消息循环,UI线程可以自由处理其他输入? 当等待的任务完成时,整个堆栈是否被推送到消息队列,这样控制将通过每个嵌套函数返回,或者是否还有其他完全发生的事情? 其次(虽然我引起了你的注意),我真的不明白为什么异步方法需要用async标记。 不能异步执行任何方法吗? 如果我想异步执行一个方法但它没有async关键字怎么办?有没有办法简单地做到这一点? 干杯。 🙂 编辑:不可否认,如果我能得到示例代码编译,我可能只是想出自己,但出于某种原因,我遇到了一个块。 我真正想知道的是,延续的持续程度是多久…是否冻结整个调用堆栈,在任务完成时恢复它,还是只返回到目前为止? 函数本身是否需要标记为异步以支持延续,或者(正如我最初所说的那样)是否继续整个调用堆栈? 如果它没有冻结整个调用堆栈,当异步等待命中非异步调用函数时会发生什么? 它阻止了吗? 难道这不会等待等待吗? 我希望你能看到我在这里缺少一些理解我希望有人可以填写,所以我可以继续学习这个。

使用Async和Await进行异步编程

我正在阅读本教程,了解如何在c#中异步编程并遇到错误我不知道如何解决。 这是链接: http : //msdn.microsoft.com/en-us/library/hh191443.aspx ,错误是: Cannot find all types required by the ‘async’ modifier. Are you targeting the wrong framework version, or missing a reference to an assembly? 我的目标是.NET 4.0框架,并且不确定是否需要任何其他程序集。 这是代码: public async Task AccessTheWebAsync(Class1 class1, Class2 class2) { // GetStringAsync returns a Task. That means that when you await the // task you’ll […]

如何更好地理解“异步 – 处理多个exception”一文中的代码/语句?

运行以下C#控制台应用程序 class Program { static void Main(string[] args) { Tst(); Console.ReadLine(); } async static Task Tst() { try { await Task.Factory.StartNew (() => { Task.Factory.StartNew (() => { throw new NullReferenceException(); } , TaskCreationOptions.AttachedToParent ); Task.Factory.StartNew ( () => { throw new ArgumentException(); } ,TaskCreationOptions.AttachedToParent ); } ); } catch (AggregateException ex) { // this […]

异步CTP在VS 2010 SP1中不起作用?

我下载了Async CTP并将其安装在我的开发机器上,该机器同时具有VS 2010和VS 2012.安装似乎已成功完成(无错误)。 我创建了一个全新的WinForms项目(语言:VB.NET),并使用Async修饰了一个Form_Load。 问题是无法识别Async关键字。 有没有人设法使它工作,如何? 在VS 2012中执行相同操作,以.NET Framework 4.5为目标。 注意:此时我不需要任何Silverlight , Windows Phone甚至Web 。