нашел у тебя пару косяков, пока пиздил код: 1. семафор не диспозится 2. ошибка в task не завершает итерации 3. limiter.CurrentCount == degree вызывается ДО Release и не совсем понятно, как оно работает 4. OperationCancelled имеет пустой Exception поэтому кансел нужно хендлить отдельно