草庐IT

task_struct

全部标签

c# - 有通用的 Task.WaitAll 吗?

我开始一些并行任务,像这样:vartasks=Enumerable.Range(1,500).Select(i=>Task.Factory.StartNew(ProduceSomeMagicIntValue)).ToArray();然后加入他们Task.WaitAll(tasks);在最后一行中,我在tasks下看到了一个蓝色的波浪形标记,并带有一条警告消息:Co-variantarrayconversionfromTask[]toTask[]cancauserun-timeexceptiononwriteoperation.我明白为什么我会收到这条消息,但有没有办法解决这个问题?(例

c# - .NET 4.0 中使用 C# 的 Task.Run 的替代方法是什么?

我得到的这个程序给我语法错误“System.Threading.Tasks.task不包含运行的定义。”我正在使用VB2010.NET4.0有任何想法吗?.net4.0中运行的任何替代品?usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceChatApp{classChatProg{staticvoidMain(string[]args){TaskwakeUp=DoW

c# - 返回两个值,元组 vs 'out' vs 'struct'

考虑一个返回两个值的函数。我们可以这样写://Usingout:stringMyFunction(stringinput,outintcount)//UsingTupleclass:TupleMyFunction(stringinput)//Usingstruct:MyStructMyFunction(stringinput)哪个是最佳实践,为什么? 最佳答案 它们各有优缺点。Out参数快速且便宜,但需要您传入一个变量,并依赖于变异。在LINQ中正确使用输出参数几乎是不可能的。元组会产生收集压力1并且不会self记录。“Item1”

c# - 我应该使用 ThreadPools 还是 Task Parallel Library 来进行 IO 绑定(bind)操作

在我的一个类似聚合器的项目中,我从网络解析提要、播客等。如果我使用顺序方法,考虑到大量资源,处理所有资源需要相当长的时间(因为网络问题和类似问题);foreach(feedinfeeds){read_from_web(feed)parse(feed)}所以我想实现并发性,但无法决定是应该基本上使用ThreadPools来处理工作线程,还是仅仅依靠TPL来对其进行排序。ThreadPools肯定会通过工作线程为我处理工作,我会得到我期望的结果(在多核CPU环境中,其他核心也会被利用)。但我仍然想考虑TPL,因为它是推荐的方法,但我有点担心。首先,我知道TPL使用ThreadPools但增

c# - Task<int> 是如何变成一个 int 的?

我们有这个方法:asyncTaskAccessTheWebAsync(){HttpClientclient=newHttpClient();TaskgetStringTask=client.GetStringAsync("http://msdn.microsoft.com");//Youcandoworkherethatdoesn'trelyonthestringfromGetStringAsync.DoIndependentWork();stringurlContents=awaitgetStringTask;//Thethingisthatthisreturnsaninttoame

c# - 'await' 有效,但调用 task.Result 挂起/死锁

我有以下四个测试,最后一个在我运行时挂起。为什么会这样:[Test]publicvoidCheckOnceResultTest(){Assert.IsTrue(CheckStatus().Result);}[Test]publicasyncvoidCheckOnceAwaitTest(){Assert.IsTrue(awaitCheckStatus());}[Test]publicasyncvoidCheckStatusTwiceAwaitTest(){Assert.IsTrue(awaitCheckStatus());Assert.IsTrue(awaitCheckStatus())

c# - 关于 Task.Start() 、 Task.Run() 和 Task.Factory.StartNew() 的用法

我刚刚看到3个关于TPL使用的例程,它们做同样的工作;这是代码:publicstaticvoidMain(){Thread.CurrentThread.Name="Main";//Createataskandsupplyauserdelegatebyusingalambdaexpression.TasktaskA=newTask(()=>Console.WriteLine("HellofromtaskA."));//Startthetask.taskA.Start();//Outputamessagefromthecallingthread.Console.WriteLine("Hel

c# - Parallel.ForEach 与 Task.Run 和 Task.WhenAll

使用Parallel.ForEach或Task.Run()异步启动一组任务有什么区别?版本1:Liststrings=newList{"s1","s2","s3"};Parallel.ForEach(strings,s=>{DoSomething(s);});版本2:Liststrings=newList{"s1","s2","s3"};ListTasks=newList();foreach(varsinstrings){Tasks.Add(Task.Run(()=>DoSomething(s)));}awaitTask.WhenAll(Tasks); 最佳

c# - 等待 vs Task.Wait - 死锁?

我不太明白Task.Wait和await之间的区别。我在ASP.NETWebAPI服务中有类似于以下功能的东西:publicclassTestController:ApiController{publicstaticasyncTaskFoo(){awaitTask.Delay(1).ConfigureAwait(false);return"";}publicasyncstaticTaskBar(){returnawaitFoo();}publicasyncstaticTaskRos(){returnawaitBar();}//GETapi/testpublicIEnumerableGe

c# - C# 中 Task.FromResult<TResult> 有什么用

在C#和TPL(TaskParallelLibrary)中,Task类表示正在进行的工作,它会产生T类型的值。我想知道Task.FromResult需要什么方法?即:在手边已经有了生产值的场景下,还需要将其包装回Task中吗?唯一想到的是它被用作其他接受任务实例的方法的适配器。 最佳答案 我发现了两个常见的用例:当您实现一个允许异步调用者的接口(interface),但您的实现是同步的。当您stub/模拟异步代码以进行测试时。 关于c#-C#中Task.FromResult有什么用,我们