예제 #1
0
        public ResourceExplorer()
        {
            InitializeComponent();
            m_previewGeneratorFileQueue = new BlockingCollection <File>();

            m_previewGenerator = new Thread(() =>
            {
                File nextFile;
                while (m_previewGeneratorFileQueue.TryTake(out nextFile, -1))
                {
                    var preview = ProviderFor(nextFile.Info.Extension).LoadPreview(nextFile.Info);
                    preview.Freeze();
                    nextFile.Preview = preview;
                }
            })
            {
                IsBackground = true, Name = $"{nameof(ResourceExplorer)}_preview_generator_thread", Priority = ThreadPriority.Lowest
            };
            m_previewGenerator.Start();

            m_resourcesCache          = new Dictionary <string, WeakReference>();
            m_defaultResourceProvider = new DefaultResourceProvider();

            OnResourceInfoProvidersChanged(this, default(DependencyPropertyChangedEventArgs));
            OnRootPathChanged(this, default(DependencyPropertyChangedEventArgs));

            if (!ServiceLocator.IsRegistered <IResourceProviderService>())
            {
                ServiceLocator.Register <IResourceProviderService>(this);
            }
        }
        public ResourceExplorer()
        {
            InitializeComponent();

            m_resourcesCache          = new Dictionary <string, WeakReference>();
            m_defaultResourceProvider = new DefaultResourceProvider();

            OnResourceInfoProvidersChanged(this, default(DependencyPropertyChangedEventArgs));
            OnRootPathChanged(this, default(DependencyPropertyChangedEventArgs));

            if (!ServiceLocator.IsRegistered <IResourceProviderService>())
            {
                ServiceLocator.Register <IResourceProviderService>(this);
            }
        }