-1

我有 25 个线程正在运行。每个线程都执行以下操作:

  1. 读取一个包含大约 1000 条记录的 txt 文件,
  2. 放入数据表
  3. sql 批量插入到 sql server

启动所有线程后,我需要等待线程完成处理,为此我使用了Thread.Join. 我的问题是,线程甚至在完成上述步骤之前就完成了完成任务。我在这里看到的唯一原因是,数据库表的大小逐渐增加到超过 2000 万条记录。然后,插入数据需要一些时间。是线程在等待向 SQL Server 插入数据时中止了吗?我什至尝试过使用Task.Factory.StartNewand ContinueWhenAll,但结果是一样的。有没有更好的方法来处理这个?

4

2 回答 2

0

一些东西。
1) 如果此任务似乎在所有线程完成执行之前完成,则说明您使用了不正确的同步。
2)您的数据库可能会用完其池中的可用连接。我相信默认情况下大多数数据库允许 10 个并发连接。(我假设你配置正确)。

CW,因为这太渴望发表评论了。

于 2012-07-24T12:23:15.830 回答
0

似乎在某些线程中引发了异常。可能是因为对数据库的并发连接的限制。您需要实施正确的错误处理和日志记录以了解根本原因。

于 2012-07-24T12:18:58.380 回答