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(); } }
public IEnumerable <ProgressMessage <T> > DequeueAllItems() { lock (lockObj) { while (queuedProgressMessages.Count > 0) { ProgressMessage <T> item = queuedProgressMessages.Dequeue(); yield return(item); } ClearQueue(); } }