Exemple #1
0
        void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs args)
        {
            // Clean up - remove from queue, set status
            UploadResult result = (UploadResult)args.Result;

            lock (batchUploadLock)
            {
                batchUploaders.Remove(result.ProcessId);
            }

            if (result.Status == UploadStatus.Processed)
            {
                // Dequeue
                queueManager.Dequeue(result.ProcessId, result.UserId);
            }
            else if (result.Status == UploadStatus.Failed)
            {
                //  we can't throw an exception here as we are on a callback thread. But we have an error message.
                //  put it in an error table for query
                String errorMessage = result.ErrorMessage;
                queueManager.AddErrorMessage(result.ProcessId, errorMessage, result.UserId);
            }
            else
            {
                // This should also catch cancelled events
                queueManager.UpdateQueue(result.ProcessId, result.Status, result.UserId);
            }
        }