Resolve the 100% cpu problem. Creating progress threads is fine, but the event library needs something upon which it can block - otherwise, it just falls thru. So for each progress thread we create, create a pipe and set an event to fire when the read end is ready - but never write anything into it. This will block the event progress thread, but still allow other events to fire.