Beispiel #1
0
        private void bgThumbsLoader_DoWork(object sender, DoWorkEventArgs e)
        {
            //-------------------------------------------------------------
            // /!\ This is WORKER THREAD space. Do not update UI.
            //-------------------------------------------------------------
            Thread.CurrentThread.Name = String.Format("Thumbnail Loader ({0})", Thread.CurrentThread.ManagedThreadId);
            List <String> fileNames = (List <String>)e.Argument;

            m_InfosThumbnailQueue.Clear();
            m_iLastFilled = -1;

            e.Cancel = false;

            for (int i = 0; i < fileNames.Count; i++)
            {
                if (!m_bgThumbsLoader.CancellationPending)
                {
                    try
                    {
                        InfosThumbnail it = m_VideoFile.GetThumbnail(fileNames[i], 200, 5);
                        m_InfosThumbnailQueue.Insert(0, it);
                    }
                    catch (Exception)
                    {
                        m_InfosThumbnailQueue.Insert(0, null);
                    }
                    m_bgThumbsLoader.ReportProgress(i, null);
                }
                else
                {
                    log.Debug("bgThumbsLoader_DoWork - cancelling");
                    e.Cancel = true;
                    break;
                }
            }
            e.Result = 0;
        }