When you use PrintPanel, PrintCtrl, PrintTextBuffer, or PrintTextFile to print from a given thread, these functions block other threads that attempt to print until the active print function returns. This blocking occurs even when the print function displays a dialog box and waits for user events.
If you set ATTR_EJECT_AFTER to zero in one thread, the paper is not ejected even when the next call to a print function comes from another thread. For this reason, use caution when you print from multiple threads.