[ 2paca.zwaka @ 03.01.2012. 16:58 ] @
Imam klasu Folder i u njoj metodu LoadSubFolders() koja 'puni' ObservableCollection<Folder>.

Aplikacija je uradjena u WPF na MVVM obrazcu i ima TreeView kontrolu, napravljena na principu Load on demand.....

Interesuje me dali postoji neki brzi nacin od ovoga jer mi za ucitavanje podfoldera u 'C:\\WINDOWS\\' treba oko 2 sekunde.......

Dali da 'zalepim' C-om i Win32 funkcijama poput FindNextFile i kako ?

ili eventualno background thread da ucitava ove podatke..............

Code:

public void LoadSubFolders()
{
 if (!this.HasLoadedSubFolders)
            {
                // Pomocni niz koji koristimo za odredjivanje dali folder zadrzi podfoldere
                IO.DirectoryInfo[] testArray;
                foreach (IO.DirectoryInfo directory in this._info.GetDirectories("*", IO.SearchOption.TopDirectoryOnly))
                {
                    Folder subDirectory;
                    // Ispitujemo dali taj folder ima pod foldera ili je krajnji
                    try
                    {
                        testArray = directory.GetDirectories("*", IO.SearchOption.TopDirectoryOnly);
                        if (testArray.Length > 0)
                            // Ako nije krajnji dodaje mu se DummyChild
                            // Zbog + simbola ( Expander )
                            subDirectory = new Folder(directory, true);
                        else
                            // U suprotom folder je krajnji 
                            // I ne dodajemo mu DummyChild jer ne zelimo + simbol ( Expander )
                            subDirectory = new Folder(directory, false);

                        // Dodajemo folder u parent folder
                        this.SubFolders.Add(subDirectory);
                    }
                    catch (Exception exc)
                    {
                        MessageBox.Show(exc.Message);
                    }
                }
                this.HasLoadedSubFolders = true;
            }
}



Hvala unapred.....
[ sallle @ 04.01.2012. 14:50 ] @
sam ovaj kod ne bi trebalo da ti pravi neke probleme, mada ako imas problem sa vremenom, verovatno imas evente koji iznova i iznova zovu ovaj ili neki drugi kod...

btw, ovaj kod si mogao napisati i kao:

Code:

foreach (var dir in _info.GetDirectories()){
this.subFolders.add(new Folder(dir,dir.GetDirectories().Length>0));
}


pretpostavljam da ove subfoldere drzis u nekoj hashtabeli? : Dictionary<DirectoryInfo, IList<Folder>>


[ 2paca.zwaka @ 09.01.2012. 16:54 ] @
Da budem iskren ne drzim, koja je prednost toga ?
Ovo sam samo nesto 'na brzaka' pisao da vidim vredi li u c# raditi file manager, ali je zaista sporo.
Znas li neki nacin da preko Shell-a uradim ovo i da li vredi da se ovde koristi native C zakrpa u Win32Api-ju ?
Hvala
[ Mihajlo Cvetanović @ 09.01.2012. 17:22 ] @
Ako ti treba funkcionalnost, ali nije neophodno da je sam praviš onda pogledaj Nomad.NET, file manager napisan u C# pretpostavljam.