任务或线程c#

时间:2019-01-30 16:17:45

标签: c# multithreading task threadpool

我有两种情况,不确定是否使用任务或线程(与dot net Framework 4.7一起使用)

方案1:数据库查询

我有一组用SqlCommand类执行的数据库查询。我需要所有给定的查询来并行运行。查询时间从1分钟到60分钟。

在这种情况下哪个更好?只是在等待查询完成时,线程/任务实际上是否处于“活动”状态?

方案2:解析XML

我说一个列表或数组中有1000个XmlFile对象。我有一组XPath表达式,需要将它们从这1000个文件中解析为一个DataTable对象(以供以后部署到数据库中)。 最好的情况是,并行解析这1000个文件中的许多文件。

解析应该不会花费太长时间,但绝对应该超过几秒钟。我目前使用Task.Run()实现了这一过程,虽然它无法真正监视并行运行的数量,但是它花了1000秒钟花费了90秒。

在什么时候服用什么药物上也有一般规则吗?

谢谢

1 个答案:

答案 0 :(得分:0)

该线程用于在Windows中创建和操作线程。

任务代表某种异步操作,并且是任务并行库的一部分,任务并行库是一组用于异步和并行运行任务的API。

考虑到Task比线程更抽象,通常是在线程池上创建的,它被视为后台线程,而默认情况下,线程不是后台线程,可以通过下面两个图中的代码进行验证。

通过这种方式,我建议尽可能使用更高级别的抽象。因此,您应该使用任务而不是线程,因为它是在已经由系统创建线程的线程池上创建的,以提高性能,并且您不必担心显式启动/管理自己的线程。

洛杉矶。