When you program a Win32 Application, does it only handle one thing at a time?

Say, if I used SetTimer() to post a message every 30 seconds, and when the window received that timer message it would put up a message box. Would this timer/message box be paused if another function was executing?

The reason I ask is that I'm doing things with linked lists, and I have a timer that triggers a function that searches through the list and deletes/adds things. Now, it wouldn't be good if a function was dealing with an object in the list and then the timer function went and deleted that object.

Any help will be appreciated. Thank you.