This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
The key here is what happens in upload(). Setting the finished flag does not stop upload() from executing, it just prevents it from running again. If you want to make sure upload() stops before it completes there needs to be some way to interrupt the execution of that code. Since you don't show that code it is hard to say how you should do that.