ConcurrentBag<PSegmentColl> inL = new ConcurrentBag<PSegmentColl>();
ConcurrentBag<PSegmentColl> outL = new ConcurrentBag<PSegmentColl>();
ConcurrentBag<PSegment> free = new ConcurrentBag<PSegment>();
using (LongOperationManager lom = new LongOperationManager("Идет обработка", knots.Count)) // Индикатор прогресса (обертка для MeterProgress) https://www.keanw.com/2007/08/a-handy-net-cla.html
{
Parallel.ForEach(knots, col => Working2d(col, tol, ref inL, ref outL, ref free, ref loopCount));
// не важно что там внутри Working2d - оно работает, раскидывает элементы списка по другим спискам как мне надо
}