コード例 #1
0
 /// <summary>
 /// Called when image loading is done.
 ///
 /// effects: switch the image loading state to Idle.
 /// </summary>
 private void ImageLoadingDone()
 {
     imageLoadingState = ImageLoadingState.Idle;
     imageLoadingDone = null;
 }
コード例 #2
0
        public void RefreshThumbnails(ImageCollection images)
        {
            if (imageLoadingState == ImageLoadingState.Loading ||
                imageLoadingState == ImageLoadingState.CancelLoading)
            {
                CancelLoading(images);
                return;
            }

            Debug.Assert(imageLoadingState == ImageLoadingState.Idle);

            // Show them in list view.
            Items.Clear();
            ImageList imageListLarge = new ImageList();
            imageListLarge.ColorDepth = ColorDepth.Depth24Bit;
            imageListLarge.ImageSize = new Size( cxThumbnail, cyThumbnail);
            LargeImageList = imageListLarge;

            BeginUpdate();

            // Add items first to prevent flickers.
            foreach (ImageInfo imageFile in images)
            {
                ListViewItem item = new ListViewItem();
                item.ImageIndex = -1;
                item.Text = Path.GetFileName(imageFile.ImagePath);
                item.Tag = imageFile;
                Items.Add(item);
            }

            EndUpdate();

            // Switch the state.
            imageLoadingState = ImageLoadingState.Loading;
            imageLoadingDone = new ThumbnailLoadingDoneDelegate(ImageLoadingDone);

            // Use asynchronous delegate to load image thumbnails.
            LoadThumbnailsDelegate loadThumbnails = new LoadThumbnailsDelegate(LoadThumbnails);
            loadThumbnails.BeginInvoke( images, null, new Object());
        }
コード例 #3
0
        private void CancelLoading(ImageCollection images)
        {
            imagesToRefresh = images;

            // remove all attached ImageInfo before canceling the loading to prevent flash
            foreach (ListViewItem item in Items)
            {
                item.Tag = null;
            }

            // change the status to cancel image loading
            imageLoadingState = ImageLoadingState.CancelLoading;

            // delay the refresh until image loading is canceled
            imageLoadingDone = new ThumbnailLoadingDoneDelegate(ImageLoadingDoneAndRefresh);
        }