我有两种情况,不确定是否使用任务或线程(与dot net Framework 4.7一起使用)
方案1:数据库查询
我有一组用SqlCommand类执行的数据库查询。我需要所有给定的查询来并行运行。查询时间从1分钟到60分钟。
在这种情况下哪个更好?只是在等待查询完成时,线程/任务实际上是否处于“活动”状态?
方案2:解析XML
我说一个列表或数组中有1000个XmlFile对象。我有一组XPath表达式,需要将它们从这1000个文件中解析为一个DataTable对象(以供以后部署到数据库中)。 最好的情况是,并行解析这1000个文件中的许多文件。
解析应该不会花费太长时间,但绝对应该超过几秒钟。我目前使用Task.Run()实现了这一过程,虽然它无法真正监视并行运行的数量,但是它花了1000秒钟花费了90秒。
在什么时候服用什么药物上也有一般规则吗?
谢谢
答案 0 :(得分:0)
该线程用于在Windows中创建和操作线程。
任务代表某种异步操作,并且是任务并行库的一部分,任务并行库是一组用于异步和并行运行任务的API。
考虑到Task比线程更抽象,通常是在线程池上创建的,它被视为后台线程,而默认情况下,线程不是后台线程,可以通过下面两个图中的代码进行验证。
通过这种方式,我建议尽可能使用更高级别的抽象。因此,您应该使用任务而不是线程,因为它是在已经由系统创建线程的线程池上创建的,以提高性能,并且您不必担心显式启动/管理自己的线程。
洛杉矶。