I'm having a problem that seems to be caused by how SQL Server
buffers multiple results sets. The goal here is to send a status result set
do some work and a data result set, send another status result set, do
more work with a data result set, and so on.

The problem is that the status result sets, which is small, is being
buffered until the data result set is generated, and that can be a long
wait. Is there a way to flush the results output buffer from within a
stored procedure? (Other than by selecting a large (4K?) result set).

some pseudocode:
cursor on taskid
get taskid
while status OK
select taskid
process_and_select_results( taskid )
next taskid
end while