13 потоков довольно мало. К сожалению, вы не сможете избавиться от большинства этих потоков без сокращения функциональности.
Избавиться от RPC & COM, скорее всего, невозможно для управляемого приложения, и все потоки CLR, кажется, делают что-то полезное. Я предполагаю, что вы используете GDI + (возможно, через System.Drawing.) Несмотря на то, что запущено 0 рабочих потоков, пул потоков находится в режиме ожидания и готов к запуску. Вы не хотите, чтобы при публикации рабочего элемента возникали накладные расходы по созданию нового потока в незанятом процессе.
Даже если вы используете 40 МБ личной памяти, это, скорее всего, не связано с количеством потоков. Даже если каждый поток полностью использовал свой стек по умолчанию 1 МБ (чего они определенно нет, большая часть стека зарезервирована, но не зафиксирована и не будет отображаться как частные байты), то есть только 13 МБ из 40 МБ ты видишь. Можете ли вы использовать CLR Profiler, чтобы увидеть, какие выделения выполняет ваше приложение?