IDG Answers is a community of experts who are passionate about technology. Ask a question or answer one below.
Any number of things could be happening - or perhaps more accurately, nothing at all is happening, and thats the problem. Basically if the program fails to respond within a specified amount of time then windows will mark it as not responding. If the program is poorly written then perhaps it is doing something so intensive on the main thread of the program (downloading a file, etc) that it will not release any cpu cycles for the program to respond for things like screen updates, etc.
It could even just be sitting there with a modal dialog box open waiting for you to click ok, but you can't see it behind some other window. it will wait patiently until the end of time, or a power outage, whichever comes first.
It could be trying to use low level services for which there is an incompatible driver that is attempting to do somethign that windows doesnt like, so windows blocks its access, it keeps trying anyway and fails to respond to your program, and your program just sits there and waits, becoming unresponsive as well.
There could be a hardware fault that the program is completely insulated from that creates pretty much the same scenario, the hardware won't respond, so the program waits indefinately, becoming un-responsive again. Well written programs should provide a timeout for such situations but the situations are numerous and often unforeseeable.
There are numerous other possibilities, all of them producing similar symptoms for the user - an unresponsive ui. often the only thing you can do is press alt-control-delete select the task manager, find your programs root task in the list of running programs (probably marked as not responding) and kill the process, restarting the program if need be.
Sometimes doing that over and over will leave your systems memory a bit dirty, and rebooting is the only way to clear it out.