Hot Folders and file cycling logic

This should be simple, but I can’t find an example of it.

I modified one of the folder action scripts to watch a folder and open/print PDF documents dropped into a specific folder. I’ve found that if I drop a few files, the script starts cycling through the files-- however, If I add more files before the script finishes with the first batch, the script sometimes doesn’t pick up and start processing the second batch.

Any suggestions as the best way to handle this condition?


on adding folder items to this_folder after receiving these_items
	-- CHECK FOR THE DESTINATION FOLDER WITHIN THE ATTACHED FOLDER
	-- IF IT DOESN'T EXIST, THEN CREATE IT
	tell application "Finder"
		if not (exists folder done_foldername of this_folder) then
			make new folder at this_folder with properties {name:done_foldername}
			set current view of container window of this_folder to list view
		end if
		set the target_folder to folder done_foldername of this_folder
	end tell
	-- PROCESS EACH OF THE ITEMS ADDED TO THE ATTACHED FOLDER
	try
		repeat with i from 1 to number of items in these_items
			set this_item to item i of these_items
			set the item_info to the info for this_item
			-- CHECK TO SEE IF THE ITEM IS AN IMAGE FILE OF THE ACCEPTED FILE TYPE
			if (alias of the item_info is false and the file type of the item_info is in the type_list) or (the name extension of the item_info is in the extension_list) then
				tell application "Finder"
					-- LOOK FOR EXISTING MATCHING ITEMS IN THE DESTINATION FOLDER
					-- IF THERE ARE MATCHES, THEN RENAME THE CONFLICTING FILES INCREMENTALLY
					my resolve_conflicts(this_item, target_folder)
					-- MOVE THE ITEM TO THE DESTINATION FOLDER
					set the target_file to (move this_item to the target_folder with replacing) as alias
				end tell
				-- PROCESS THE ITEM
				process_item(target_file)
			end if
		end repeat
	on error error_message number error_number
		if the error_number is not -128 then
			tell application "Finder"
				activate
				display dialog error_message buttons {"Cancel"} default button 1 giving up after 120
			end tell
		end if
	end try
end adding folder items to

Perhaps checking to see if the printer is busy and waiting in a loop. Using something like this in the loop:

tell application "Printer Setup Utility"
	set pn to name of current printer
	repeat
		set isBusy to jobs of current printer
		if isBusy is {} then
			exit repeat
		else
			display dialog "Printer not ready, please wait"
		end if
		delay 2
	end repeat
end tell
-- ready to print some more