Мы разрабатываем приложение, в котором пользователи могут ставить несколько задач одновременно.Мы используем ThreadPool.QueueUserWorkItem, чтобы установить выполнение задач.Эта часть работает хорошо.
У нас есть проблема, когда эти задачи могут потреблять более 500 МБ памяти.Мы используем отображенный в памяти ввод / вывод для управления памятью.Тем не менее, когда пользователи устанавливают более 10 задач, выполняющихся одновременно, пул потоков запускает их все, и были времена, когда у нас не хватало памяти, и возникали исключения.Мы можем справиться с ошибками очень хорошо.
Что мне интересно, так это то, есть ли способ учесть память, которая будет использоваться при обработке очереди, то есть сохранять задачи в очереди, пока не будет достаточно памяти?Могу ли я сообщить пулу потоков о том, сколько памяти мы будем запрашивать (что мы можем приблизительно оценить)?