Unfortunately, if you do any kind of multithreaded processing, you've probably been tempted to use DoEvents more than once; more so if you've previously used or are currently using Visual Basic.NET. While not intrinsically a bad idea, it's indicative of bad design. But worry not! There are smarter alternatives, as we outline here.
Also, if you're looking for a replacement that solves about 90% of your DoEvents problems, here's one good way to solve your woes. Best of all, it's drag and drop, so you can use it straight from the designer.