我有一个包含数百个需要处理的项目的循环。
通过有条件地设置全局 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/