The status of printers and print jobs are updated by the Win32 Spooler during the despool of a print job. At all other times, when that printer is not despooling and reports no state information, the printer is considered to be ready and idle.
You get the status of the printer and on the basis of which you can rollback your transaction else, you can commit your transaction.
See these links:
For a more detailed version, check this out :
Monitoring a Printer Queue from VB.NET
Hope this helps !! :) :)