Typical C++ Usage
IProvQueue *pProvQueue = NULL;
BSTR bstrRequest = NULL;
BSTR bstrQueueID = NULL;
BSTR bstrResults = NULL;
HRESULT hr = E_OUTOFMEMORY;
// The code for creating the queue manager client and the request string was skipped
...
// Create a queued request
hr = pProvQueue->SubmitTrustedRequest(bstrRequest, FALSE, &bstrQueueID);
if(FAILED(hr)) goto LocalCleanup;
// Wait for 10s or until the request succeeds
for(int i = 0; i < 10; ++i)
{
hr = pProvQueue->QueryResults(bstrQueueID, &bstrResults);
if(hr != E_QUEUE_NOT_DONE_PROCESSING)
break;
Sleep(1000);
}
if(bstrResults)
MessageBoxW(NULL, bstrResults, L"Queued request result", MB_OK);
else
MessageBoxW(NULL, "The queued request didn't complete successfully within 10s", L"Queued request results", MB_OK);
// Clean up
LocalCleanup:
if(pProvQueue)
pProvQueue->Release();
::SysFreeString(bstrRequest);
::SysFreeString(bstrQueueID);
::SysFreeString(bstrResults);