Warum ist das so und wie geht es besser?
Du bietest dem Anwender die Möglichkeit, Daten einzeln in die Threadliste zu schreiben (wie man das von einer normalen Liste gewohnt ist). Es besteht also die Gefahr, das er (der Anwender, also ein anderer Programmierer) diese sehr praktische Möglichkeit nutzt, anstatt die anstehenden Änderungen zu sammeln, um sie explizit durch einmaliges Lock/Unlock in die Liste einzutragen.
Du meinst ein klassisches AddRange()?
Ja, das wäre noch denkbar.