Exemplo n.º 1
0
        private void ResolverThread()
        {
            ThumbnailParameters thumbnailParameters = null;

            do
            {
                lock (m_resourcesToResolve)
                {
                    if (m_resourcesToResolve.Count > 0)
                    {
                        thumbnailParameters = m_resourcesToResolve.Dequeue();
                    }
                    else
                    {
                        thumbnailParameters = null;
                    }
                }

                if (thumbnailParameters != null)
                {
                    lock (m_resolvers)
                    {
                        object thumbnailImage = null;
                        foreach (var resolver in m_resolvers)
                        {
                            try
                            {
                                thumbnailImage = resolver.Resolve(thumbnailParameters);
                                if (thumbnailImage != null)
                                {
                                    // Add it to the resolved queue
                                    lock (m_resolvedResources)
                                    {
                                        m_resolvedResources.Enqueue(new ResolvedThumbnail(thumbnailParameters.Source, thumbnailImage));
                                    }
                                    break;
                                }
                            }
                            catch (Exception ex)
                            {
                                Outputs.WriteLine(OutputMessageType.Warning, ex.Message);
                            }
                        }

                        // Signal that no resolver managed to generate the image
                        if (thumbnailImage == null)
                        {
                            lock (m_resolvedResources)
                            {
                                m_resolvedResources.Enqueue(new ResolvedThumbnail(thumbnailParameters.Source, thumbnailImage));
                            }
                        }
                    }
                }
            }while (thumbnailParameters != null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Resolves the Resource into a path to a thumbnail image file using a background thread</summary>
        /// <param name="resourceUri">URI of the resource to resolve</param>
        public void ResolveThumbnail(ThumbnailParameters resourceUri)
        {
            // Push the resource onto the resolve queue
            lock (m_resourcesToResolve)
            {
                m_resourcesToResolve.Enqueue(resourceUri);
            }

            if (!IsThreadAlive())
            {
                StartThread();
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Resolves the Resource into a path to a thumbnail image file</summary>
        /// <param name="resourceUri">URI of the resource to resolve</param>
        /// <returns>Path to thumbnail image file</returns>
        public object ResolveThumbnailBlocking(ThumbnailParameters resourceUri)
        {
            object thumbnailImage = null;

            foreach (IThumbnailResolver resolver in m_resolvers)
            {
                thumbnailImage = resolver.Resolve(resourceUri);
                if (thumbnailImage != null)
                {
                    break;
                }
            }

            return(thumbnailImage);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Resolves the Resource into a path to a thumbnail image file using a background thread</summary>
        /// <param name="resourceUri">URI of the resource to resolve</param>
        public void ResolveThumbnail(ThumbnailParameters resourceUri)
        {
            // Push the resource onto the resolve queue
            lock (m_resourcesToResolve)
            {
                m_resourcesToResolve.Enqueue(resourceUri);
            }

            if (!IsThreadAlive())
            {
                StartThread();
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Resolves the Resource into a path to a thumbnail image file</summary>
        /// <param name="resourceUri">URI of the resource to resolve</param>
        /// <returns>Path to thumbnail image file</returns>
        public object ResolveThumbnailBlocking(ThumbnailParameters resourceUri)        {
            object thumbnailImage = null;
            
            foreach (IThumbnailResolver resolver in m_resolvers)
            {
                thumbnailImage = resolver.Resolve(resourceUri);
                if (thumbnailImage != null)
                {
                    break;
                }
            }

            return thumbnailImage;
        }