Maybe. Doevents allows VB6 co-opertative multithreading, seperate to the CPU's multithreading (like Win 16 multitasking). You have all the synchronisation problems of CPU multiple threading,but they can be solved with normal programming as you control switching (so no command will be preempted halfway through), unlike CPU synchronistion where special CPU instructions must be used. The CPU, because you are not using it's multithreading, treats you as a single thread (as you are to the CPU).
DoEvents is a Win16 compatability thing. It should not be used, it's dangerous, and people use it to solve imaginary problems. IT CAUSES BUGS.
What it does. It interupts your function, and jumps to the VB6 runtime to clear the message queue, making your procedure reentrant and changing the valuses your function was using to something else. It then calls WinAPI sleep(0)
for Windows to give messages to all programs. ANYTHING can happen after that.
The only thing it's useful for is making a form update before a function finishes.
But it's so dangerous.