Collapse_Troll
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Здравствуйте! С наступающим СНГ! Прошу хелпа. Суть дела: получаю версии и время записи NET-овских DLL-ок из дирректории (к примеру "C:\Program Files\Microsoft Visual Studio 8\VC\vcpackages") На форме лежит listView (названный mylistView). Вот так создаю в нем 3 колонки (название файла, версия сборки, дата записи файла): Код: // Здесь создаю колонки в listView private void CreateColumns() { mylistView.View = View.Details; mylistView.Columns.Add("File name", 150, HorizontalAlignment.Center); // колонка имени файла mylistView.Columns.Add("File version", 150, HorizontalAlignment.Center); // версия mylistView.Columns.Add("Was written in", 145, HorizontalAlignment.Center); // время создания } | Щелкаю на кнопе и в функции GetFileVersions(string tempPath) получаю версии DLL-ок из переданной директории tempPath: Код: // функция получения версий файлов private int GetFileVersions(string tempPath) { mylistView.Clear(); // очищаем listView CreateColumns(); // и пересоздаем колонки string myPath = tempPath; // название дирректории передается в функцию (к примеру "C:\Test") // обрабатываем случай неверного названия дирректории if (!Directory.Exists(@myPath)) { MessageBox.Show("Enter correct directory name", "Directory loading error"); return 1; } // ВОТ СОБСТВЕННО ПОЛУЧЕНИЕ ВЕРСИЙ и ВРЕМЕНИ СОЗДАНИЯ DLL-ок (только NET - овских) // получаем всю инфу о файлах FileInfo[] fi = new DirectoryInfo(@myPath).GetFiles("*.dll", SearchOption.TopDirectoryOnly); int counter = 0; // счетчик строчек foreach (FileInfo f in fi) // теперь выводим инфу о файлах в listView { try { mylistView.Items.Add(f.Name.ToString()); // имя в первую колонку // и во вторую и третью колонки добавляем версию и время записи mylistView.Items[counter].SubItems.Add((Assembly.LoadFile(f.FullName).GetName().Version.ToString())); mylistView.Items[counter].SubItems.Add(f.LastWriteTime.ToString()); counter++; } catch (Exception ex) { mylistView.Items.Add("bad assembly format"); } } return 0; } | Дело в том, что при большом количестве файлов в дирректории приходится долго ждать. Программа сначала собирает _всю_ инфу о файлах, а потом уже выводит. Как сделать чтобы она работала пошустрее, то есть сделать это Код: FileInfo[] fi = new DirectoryInfo(@myPath).GetFiles("*.dll", SearchOption.TopDirectoryOnly); | одновременно с выводом в listView? Для наглядности приаттачил проект, VS2005. http://slil.ru/23725990 |