Aber ist das nicht schon durch das ListView.BeginUpdate sichergestellt, dass aus diesem heraus keinerlei Zeichenvorgänge ausgelöst werden, solange ListView.EndUpdate nicht ausgeführt wird?
Die ImageList-Changes z.B. gehen aber an dem BeginUpdate/EndUpdate vorbei und landen direkt im Control.