在C#中完成任务之前,如何自动处理任务?

在C#中完成任务之前,如何自动处理任务?,c#,multithreading,task,C#,Multithreading,Task,我希望单个任务在结束后自动处理 在这段代码中,我运行并行任务并等待它们的结束。在WaitAll之后,所有任务一起被处理 Task t1 = Task.Run(() => load_1()); Task t2 = Task.Run(() => load_2()); Task t3 = Task.Run(() => load_3()); Task.WaitAll(t1, t2, t3); t1.Dispose(); t2.Dispose(); t3.Dispose(); 任务几

我希望单个任务在结束后自动处理

在这段代码中,我运行并行任务并等待它们的结束。在
WaitAll
之后,所有任务一起被处理

Task t1 = Task.Run(() => load_1());
Task t2 = Task.Run(() => load_2());
Task t3 = Task.Run(() => load_3());

Task.WaitAll(t1, t2, t3);
t1.Dispose(); t2.Dispose(); t3.Dispose();

任务几乎从来没有被处置的理由,这是在任务返回完成状态并且不再需要任务分配的资源后由.NET自动完成的。

答案基本上是,不处置任务。解释为什么“什么都不做”是正确的


基本上,您将依靠终结来处理任务处理,因为从您的简短示例来看,您没有做什么特别的事情。

请阅读以下内容:@x..-我只是在自己评论,所以没有办法…确切地说?@CosmaIaffaldano你为什么需要这样做?@x…的答案是正确的解决方案。这篇文章说,你不应该费心处理
任务
stask一开始就不一定与一条线相连,你也不应该认为它们与一条线相连。谢谢你的批评和否决,但这与我的回答无关,这里的要点是让OP知道任务处理是自动完成的,他不应该为此担心。此外,任务几乎总是绑定到线程池中的一个线程,除非您使用的是异步。任务没有要处理的线程。不,大多数应用程序中的大多数任务都不会绑定到线程。如果他们是你,你很可能是做错了什么。当然,在非常罕见的情况下,它使用线程,它将是一个线程池线程,因此它根本不是
任务
要清理的东西(即使是普通线程也不会有任何东西需要清理)。哦,这不是我的意思。很抱歉,我的答案措辞不好,英语不是我的主要语言,答案已经编辑过了。在CLR的视图中,程序总是绑定到一个我们通常称之为主线程的线程,这就是为什么任何C#程序都可以调用Thread.Sleep的原因,因此任务总是绑定到一个线程(线程池中的一个或主线程)。不,任务不绑定到线程。任务表示某种异步操作。该操作可以表示线程中执行的委托,也可以表示数据库查询、文件IO、网络请求、多个其他异步操作的组合操作、本身由另一个异步操作组成的操作,也可以表示一段时间后完成的操作,当某些事件触发时,当操作系统发送给定信号时,以及on和on。。