草庐IT

task-parallel-library

全部标签

c# - 等待与 task.Result 相同的已完成任务?

我目前正在阅读StephenCleary撰写的“C#Cookbook中的并发性”,我注意到以下技术:varcompletedTask=awaitTask.WhenAny(downloadTask,timeoutTask);if(completedTask==timeoutTask)returnnull;returnawaitdownloadTask;downloadTask是对httpclient.GetStringAsync的调用,timeoutTask正在执行Task.Delay。如果没有超时,则downloadTask已经完成。鉴于任务已经完成,为什么有必要进行第二次等待而不是返

c# - 等待和继续之间的区别

谁能解释一下await和ContinueWith在下面的例子中是否是同义词。我是第一次尝试使用TPL,并且已经阅读了所有文档,但不明白其中的区别。等待:StringwebText=awaitgetWebPage(uri);awaitparseData(webText);继续:TaskwebText=newTask(()=>getWebPage(uri));Taskcontinue=webText.ContinueWith((task)=>parseData(task.Result));webText.Start();continue.Wait();在特定情况下,一个比另一个更受欢迎吗?

c# - 等待和继续之间的区别

谁能解释一下await和ContinueWith在下面的例子中是否是同义词。我是第一次尝试使用TPL,并且已经阅读了所有文档,但不明白其中的区别。等待:StringwebText=awaitgetWebPage(uri);awaitparseData(webText);继续:TaskwebText=newTask(()=>getWebPage(uri));Taskcontinue=webText.ContinueWith((task)=>parseData(task.Result));webText.Start();continue.Wait();在特定情况下,一个比另一个更受欢迎吗?

c# - 并行运行两个异步任务并在 .NET 4.5 中收集结果

我已经尝试了一段时间来获得一些我认为使用.NET4.5会很简单的东西我想同时启动两个长时间运行的任务并收集以最佳C#4.5(RTM)方式产生结果以下是可行的,但我不喜欢它,因为:我要Sleep成为一个异步方法,所以它可以await其他方法它看起来很笨拙Task.Run()我认为这甚至根本没有使用任何新的语言功能!工作代码:publicstaticvoidGo(){Console.WriteLine("Starting");vartask1=Task.Run(()=>Sleep(5000));vartask2=Task.Run(()=>Sleep(3000));inttotalSlept

c# - 并行运行两个异步任务并在 .NET 4.5 中收集结果

我已经尝试了一段时间来获得一些我认为使用.NET4.5会很简单的东西我想同时启动两个长时间运行的任务并收集以最佳C#4.5(RTM)方式产生结果以下是可行的,但我不喜欢它,因为:我要Sleep成为一个异步方法,所以它可以await其他方法它看起来很笨拙Task.Run()我认为这甚至根本没有使用任何新的语言功能!工作代码:publicstaticvoidGo(){Console.WriteLine("Starting");vartask1=Task.Run(()=>Sleep(5000));vartask2=Task.Run(()=>Sleep(3000));inttotalSlept

c# - 我怎样才能等到 Parallel.ForEach 完成

我在当前项目中使用TPL并使用Parallel.Foreach来旋转多个线程。Task类包含Wait()以等待任务完成。像那样,我如何才能等待Parallel.ForEach完成,然后开始执行下一条语句? 最佳答案 您无需执行任何特殊操作,Parallel.Foreach()将等待所有分支任务完成。在调用线程中,您可以将其视为单个同步语句,例如将其包装在try/catch中。更新:旧的Parallel类方法不适合异步(基于任务的)编程。但是从dotnet6开始,我们可以使用Parallel.ForEachAsync()awaitPa

c# - 我怎样才能等到 Parallel.ForEach 完成

我在当前项目中使用TPL并使用Parallel.Foreach来旋转多个线程。Task类包含Wait()以等待任务完成。像那样,我如何才能等待Parallel.ForEach完成,然后开始执行下一条语句? 最佳答案 您无需执行任何特殊操作,Parallel.Foreach()将等待所有分支任务完成。在调用线程中,您可以将其视为单个同步语句,例如将其包装在try/catch中。更新:旧的Parallel类方法不适合异步(基于任务的)编程。但是从dotnet6开始,我们可以使用Parallel.ForEachAsync()awaitPa

kernel_task 进程 CPU 占用率高导致 mac 卡顿问题

kernel_task进程CPU占用率高导致mac卡顿问题问题这个问题已经遇到多次了,在mac使用中会突然变得非常卡顿,查看活动监视器发现kernel_task进程cpu占用率很高100%-800%,同时风扇声音较大。方案查了网上的方案,最多的教程是重启、重置SMC、NVRAM,但是都不管用。后来发现是外接显示器的问题,外接显示器拔掉马上就恢复了。小tips充电typec口接右侧,外接显示器接左侧(可能是玄学吧。。啊不是,其实是有道理的,可以自行搜索)kernel_task是什么kernel_task(内核任务)进程是mac操作系统的一部分,主要功能是调节mac的CPU温度。kernel_ta

c# - 创建一个完成的 Task<T>

我正在实现一种方法TaskStartSomeTask()并且碰巧在调用该方法之前就已经知道结果了。如何创建Task已经完成了吗?这是我目前正在做的:privatereadonlyResulttheResult=newResult();publicoverrideTaskStartSomeTask(){vartask=newTask(()=>theResult);task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread);returntask;}有没有更好的解决方案? 最佳答案

c# - 创建一个完成的 Task<T>

我正在实现一种方法TaskStartSomeTask()并且碰巧在调用该方法之前就已经知道结果了。如何创建Task已经完成了吗?这是我目前正在做的:privatereadonlyResulttheResult=newResult();publicoverrideTaskStartSomeTask(){vartask=newTask(()=>theResult);task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread);returntask;}有没有更好的解决方案? 最佳答案