线程卡在MySqlCommand.ExecuteNonQuery()中

Seb*_*ler 0 .net c# mysql multithreading threadpool

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

因此我使用Threadpool

ThreadPool.QueueUserWorkItem((state) => {
               method();
            });
Run Code Online (Sandbox Code Playgroud)

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

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

Hei*_*eld 5

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

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