I used multi-threading on a program that I wrote that read information for a external scale and had to do a count of the number of items on the scale. The reason I used it was so the window wasn't froze and could still close the window after they were done dumping parts on the scale. Since there was no way to know when the user would stopped putting items on the scale, so it would constantly read from the scale until the user closed the window and then the thread would be killed.
Hope that makes sense
