/// <summary>
 /// Wait for resources to become available.
 /// </summary>
 /// <param name="Wait">Supplies true to perform a blocking wait, else
 /// false to return immediately with the current availability status.
 /// </param>
 /// <returns>True if the resources are available to be accessed, else
 /// false if they are not yet loaded.</returns>
 public bool WaitForResourcesLoaded(bool Wait)
 {
     if (_resourcesLoaded)
     {
         return(true);
     }
     return(ResourcesLoadedEvent.WaitOne(Wait ? Timeout.Infinite : 0));
 }
        /// <summary>
        /// Invoked to perform cleanup of the object.
        /// </summary>
        /// <param name="Disposing">Supplies true if cleanup is occuring for
        /// IDisposable.Dispose(), else false if cleanup is occuring for
        /// finalization (which must have skippsed IDisposable.Dispose() as the
        /// normal Dispose() path suppresses finalization).</param>
        private void Dispose(bool Disposing)
        {
            if (!Disposed)
            {
                if (Disposing)
                {
                    //
                    // Clean up managed resources.
                    //

                    ResourcesLoadedEvent.Dispose();
                }

                //
                // Clean up unmanaged resources.
                //

                Disposed = true;
            }
        }
 /// <summary>
 /// Mark resources as fully loaded after initialization completes.
 /// </summary>
 internal void SetResourcesLoaded()
 {
     ResourcesLoadedEvent.Set();
     _resourcesLoaded = true;
 }