Я хочу, чтобы вызовы метода были параллельными. В этом методе я вычисляю некоторое значение (очень быстро) и записываю значение этого вычисления в таблицу базы данных.Темы застряли в MySqlCommand.ExecuteNonQuery()
Поэтому я использую Threadpool
ThreadPool.QueueUserWorkItem((state) => {
method();
});
Через некоторое время вычисления (не детерминированным, время, когда это происходит, меняется, иногда через несколько минут, иногда через несколько часов) Threadpool полон, но не с потоком метода(), но с потоком моего класса mysql, который вызывает MySqlCommand.ExecuteNonQuery
.
Есть ли у кого-нибудь идеи, как этого избежать? В документации по классам mysql я обнаружил, что вы не можете завершить исполняемый запрос, но как избежать таких проблем?
ok Теперь я добавляю запросы в список и отправляю этот список каждую минуту, но теперь я, когда заполняю список в своих потоках, и через минуту отправлю запросов, перечисление списка изменяется в потоках, что относительно этого? Я попытался заблокировать (список) {// отправить запросы}, но это не работает –
oh ... думаю, у меня было недоразумение о механизме блокировки :) Теперь я блокирую другой объект при отправке списка и при заполнении списка –