コード例 #1
0
        /// <summary>
        /// フォルダ内のファイル・フォルダを列挙します。
        /// </summary>
        private void EnumChildren()
        {
            this._folders = new ObservableCollection <PortableDeviceObjectViewModel>();
            this.Files    = new ObservableCollection <PortableDeviceObjectViewModel>();

            var worker = new BackgroundWorker()
            {
                WorkerReportsProgress = true
            };

            // 列挙
            worker.DoWork += (sender, e) =>
            {
                foreach (var child in this._model.EnumChildren())
                {
                    worker.ReportProgress(0, child);
                }
            };

            // 追加
            worker.ProgressChanged += (sender, e) =>
            {
                var child = e.UserState as PortableDeviceObject;
                if (child == null)
                {
                    return;
                }

                var vm = new PortableDeviceObjectViewModel(child);
                if (child.IsFolder)
                {
                    this._folders.Add(vm);
                    this.RaisePropertyChanged("Children");
                }
                else
                {
                    this.Files.Add(vm);
                    this.RaisePropertyChanged("Files");
                }
            };

            worker.RunWorkerAsync();
        }
コード例 #2
0
        /// <summary>
        /// フォルダ内のファイル・フォルダを列挙します。
        /// </summary>
        private void EnumChildren()
        {
            this._folders = new ObservableCollection< PortableDeviceObjectViewModel >();
            this.Files    = new ObservableCollection< PortableDeviceObjectViewModel >();

            var worker = new BackgroundWorker() { WorkerReportsProgress = true };

            // 列挙
            worker.DoWork += ( sender, e ) =>
                {
                    foreach( var child in this._model.EnumChildren() )
                    {
                        worker.ReportProgress( 0, child );
                    }
                };

            // 追加
            worker.ProgressChanged += ( sender, e ) =>
                {
                    var child = e.UserState as PortableDeviceObject;
                    if( child == null ) { return; }

                    var vm = new PortableDeviceObjectViewModel( child );
                    if( child.IsFolder )
                    {
                        this._folders.Add( vm );
                        this.RaisePropertyChanged( "Children" );
                    }
                    else
                    {
                        this.Files.Add( vm );
                        this.RaisePropertyChanged( "Files" );
                    }
                };

            worker.RunWorkerAsync();
        }