The reason I'm worried about thread safety issues is that I make updates to the list control from a separate thread.
Repeat after me..."Windows Controls should only be updated from the Thread that created them, and this thread must be a UI thread (i.e. it has a message pump)"...Repeat again and again.

The proper design is for you to update some variable/structure with the desired information, post a message to the main thread (or use some other mechanism to indicate that an update is available), and then have the main thread update the actual control.

Any other implementation will eventually lead to difficulties, unreliable program operation, maintenance issues, etc.....