/// <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(); }
/// <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(); }