Thanks, howardpc, but that seems a bit heavy-duty. I've never done it, but I looked it up in the Wiki and
it says"Do you need multi-threading?
If you are new to multi-threading and you only want to make your application more responsive while your application performs moderately long-running tasks, then multi-threading may be more than is required."
Now I don't even need my application to be responsive during the tasks, I can't think of any context where that would make sense, I just want it to finish one thing before starting another.
I think the thing it mentions further down in that section about using Application.ProcessMessages instead might be the lightweight alternative I'm looking for.