/// <summary>
		/// Initializes a new instance of the AsyncWindowManager class
		/// </summary>
		/// <param name="provider">The WindowProvider to use to create the window instance</param>
		public AsyncWindowManager(WindowProvider provider)
		{
			if (provider == null)
				throw new ArgumentNullException("provider");

			_provider = provider;
			_type = null;
			_thread = new BackgroundThread();			
			_thread.Run += new BackgroundThreadStartEventHandler(HandleThreadRun);
		}
        /// <summary>
        /// Determines if the provider exists in the collection.
        /// </summary>
        /// <param name="provider">The provider to look for.</param>
        /// <returns></returns>
		public bool Contains(WindowProvider provider)
		{
			return base.Contains(provider);
		}
        /// <summary>
        /// Removes a provider from the collection.
        /// </summary>
        /// <param name="provider">The provider to remove.</param>
		internal void Remove(WindowProvider provider)
		{
			base.Remove(provider);
		}
        /// <summary>
        /// Adds a provider to the collection.
        /// </summary>
        /// <param name="provider">The provider to add.</param>
		internal void Add(WindowProvider provider)
		{
			base.Add(provider);
		}
		/// <summary>
		/// Initializes a new instance of the AsyncWindowManager class
		/// </summary>
		/// <param name="windowType">The Type to use to create the window instance</param>
		public AsyncWindowManager(Type windowType)
		{
			if (windowType == null)
				throw new ArgumentNullException("windowType");

			_provider = null;
			_type = windowType;
			_thread = new BackgroundThread();			
			_thread.Run += new BackgroundThreadStartEventHandler(HandleThreadRun);
		}