I also query QUEUEDJOB, but use it a little differently. The query below checks the job's staus code in QUEUEDJOB every .01 seconds and breaks out of the loop when the status is no longer zero. Then the select returns the final status code of the job so you can check and act on it.
DECLARE @status as integer
DECLARE @timer as decimal(8,0)
SET @status = 0
SET @timer = 1
WHILE @status = 0
BEGIN
WAITFOR DELAY '00:00:00.100'
SET @status = (SELECT STATUS FROM .dbo.QUEUEDJOB WHERE JOBNUMBER = '')
--PRINT @status
IF @timer = 6000
BREAK
ELSE
SET @timer = @timer + 1
--PRINT @timer
END
SELECT A.STATUS
FROM .dbo.QUEUEDJOB A
WHERE A.JOBNUMBER = ''