Проблема была в том, что я использовал один и тот же экземпляр System.Drawing.Pen для всех потоков. Мне пришлось клонировать его для каждого потока, чтобы решить эту проблему.
var pens = new Pen[0];
lock (this._pens)
{
pens = (Pen[])this._pens.Select(a => (Pen) a.Clone()).ToArray();
}
Даже замок необходим для решения этой проблемы