public void ClearQueue()
 {
     lock (lockObj)
     {
         queuedProgressMessages.Clear();
         lastMessage = null;
     }
 }
        public void ReportProgress(int percentageComplete, T userState)
        {
            lock (lockObj)
            {
                ProgressMessage <T> item = new ProgressMessage <T>(percentageComplete, userState);

                lastMessage = item;
                queuedProgressMessages.Enqueue(item);

                Application.DoEvents();
            }
        }