线程卡在MySqlCommand.ExecuteNonQuery()中

时间:2009-09-23 14:26:27

标签: c# .net mysql multithreading threadpool

我想调用一个方法并行。在这个方法中,我计算一些值(非常快)并将此计算的值写入数据库表。

因此我使用Threadpool

ThreadPool.QueueUserWorkItem((state) => {
               method();
            });

经过一段时间的计算(不确定,发生这种情况的时间有所不同,有时是几分钟后,有时是几个小时后),Threadpool已经满了,但是没有使用method()的线程,而是使用我的线程调用MySqlCommand.ExecuteNonQuery的mysql类。

有没有人知道如何避免这种情况?在mysql类的文档中,我发现你无法终止正在执行的查询但是如何避免这些问题呢?

1 个答案:

答案 0 :(得分:5)

您是否需要在计算完所有值后将所有值写入数据库,或者您可以等到有一些值,并在插入大量数据时进行批量更新?

如果所有线程都试图同时写入同一个表,那么您可能会遇到锁定问题。因此,尝试在本地存储数字,然后在一个大批量中提交它们