Index: src/core/Discovery/Service.cs
===================================================================
--- src/core/Discovery/Service.cs	(revision 6713)
+++ src/core/Discovery/Service.cs	(working copy)
@@ -75,6 +75,20 @@
 		#endregion
 
 		#region IThreadService Members
+		public static void UpdateCollectionList()
+		{
+			if(!CollectionList.processed)
+				return;
+
+			CollectionList.processed = false;
+			CollectionList.listEvent.Set();
+
+			while(!CollectionList.processed)
+			{
+				Thread.Sleep(1000);
+			}
+			return;
+		}	
 		/// <summary>
 		/// Starts the thread service.
 		/// </summary>
Index: src/core/Discovery/Discovery.cs
===================================================================
--- src/core/Discovery/Discovery.cs	(revision 6713)
+++ src/core/Discovery/Discovery.cs	(working copy)
@@ -54,7 +54,7 @@
 		/// <summary>
 		/// Event used to signal thread that items have been placed on the queue.
 		/// </summary>
-		private AutoResetEvent listEvent = new AutoResetEvent( false );
+		internal static AutoResetEvent listEvent = new AutoResetEvent( false );
 
 		/// <summary>
 		/// The default process cycle time for the shared collection.
@@ -70,6 +70,7 @@
 		/// Atleast one domain should be processed for shared collection display.
 		/// </summary>
 		private bool processedOne = false;
+		internal static bool processed = false;
 
 		/// <summary>
 		/// Tells the Collection List thread to exit.
@@ -104,10 +105,12 @@
 				try
 				{
 					GetCollectionListItem(out waitTime);
+					processed = true;
 					//Wait unconditionally
 					// Wait for next cycle.
 					listEvent.WaitOne( waitTime, true );
 					processedOne = false;
+					processed = false;
 				}
 				catch( Exception e )
 				{
