sql - 是否可以在 dotnet 中引入多线程而不显式创建新线程?

标签 sql multithreading parallel-processing reentrancy

我有一个包含数百个需要处理的项目的循环。

通过有条件地设置全局 SQLConnection 来处理每个项目,其中使用此 SQLConnection 作为处理的一部分来处理该项目。

因此,不允许并行处理这些项目至关重要。

我意识到这不是一个好的设计,我希望尽快纠正它。

然而,尽管我尽了最大努力,这段代码似乎还是遇到了某种形式的多线程。不知何故,其中一项任务引发了异常。

此异常违反了外键约束,但表明它正在针对没有业务连接的 SQLConnection 进行操作。

我自然对此有所担忧,但据我所知,此应用程序中没有多线程代码。

我想知道是否可以在不显式创建新线程的情况下引入多线程

编辑:

  • VB.Net 3.5SP1
  • 控制台应用程序 + 类库
  • 偶尔调用网络服务
  • 进行 SQL 调用
  • 没有太多其他的东西。没有 Winform,就没有 WPF。

最佳答案

是的 - 使用 System.Timers.Timer 和/或 System.Threading.Timer 可能会导致您所描述的效果。每当计时器滴答作响时,新的工作项就会在线程池中排队 - 因此本质上您有一个多线程程序,而无需显式创建新线程。

如果计时器是自动重置(在调用 elapsed 后保持启用状态),您可能会同时导致对同一处理程序的另一次调用。

关于sql - 是否可以在 dotnet 中引入多线程而不显式创建新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5247155/

相关文章:

c - 在 C 中使用线程编程时的棘手死锁

c++ - 如何让一个 pthread 在另一个线程正在等待 C++ 中的信号量时继续?

c - OpenMP线程,如何正确使用omp原子子句?

php - 在选择可用房间时使用 MySQL 查询

asp.net - odbc 连接的连接字符串是什么?

sql - 如何计算多个数组中的条目数

eclipse - 从 UI 线程调用 PlatformUI.getWorkbench().getDisplay().syncExec

javascript - 在 Node.js 应用程序中完成后加入的并行 http get 请求

Python并行编程问题

sql - Oracle 和 SQL Server 之间的大表(1 亿行)数据比较