public void GetFiles6() { string arah = addressBox.Text; System.IO.DirectoryInfo pardir = new System.IO.DirectoryInfo(arah); //AddListView addListView = listView1.Items.Add; System.IO.FileInfo[] files = pardir.GetFiles(); AddIList tambahGambar = AddIListFungtion; long totalFiles = files.Length; System.Collections.Specialized.StringCollection keys = iList1.Images.Keys; Action action = () => { foreach (System.IO.FileInfo file in files) { if (keys.Contains(file.Name) == false) { Invoke(tambahGambar, new object[] { file.Name, System.Drawing.Icon.ExtractAssociatedIcon(file.FullName) }); } Console.WriteLine(file.Name); } }; /* * Jang lupa cari: * Disable UI Update * * supaya tuh iList bole mo fokus di add image kong nanti refresh satu kali dp UI supaya cepat dp respon */ Parallel.Invoke(new Action[] { action }); ListViewItem[] items1 = new ListViewItem[totalFiles]; Parallel.For(0, totalFiles, (i) => { items1[i] = new ListViewItem(files[i].Name); items1[i].ImageKey = files[i].Name; //imgs.Images.Add(files[i].Name, System.Drawing.Icon.ExtractAssociatedIcon(files[i].FullName)); }); listView1.Items.AddRange(items1); }
public void GetFiles3() { string arah = addressBox.Text; System.IO.DirectoryInfo pardir = new System.IO.DirectoryInfo(arah); //AddListView addListView = listView1.Items.Add; System.IO.FileInfo[] files = pardir.GetFiles(); //int proCount = System.Environment.ProcessorCount; AddIList tambahGambar = AddIListFungtion; long totalFiles = files.Length; System.Collections.Specialized.StringCollection keys = iList1.Images.Keys; Action action = () => { foreach (System.IO.FileInfo file in files) { if (fileThreadLoop == false) { break; } if (keys.Contains(file.Name) == false) { Invoke(tambahGambar, new object[] { file.Name, System.Drawing.Icon.ExtractAssociatedIcon(file.FullName), file.FullName }); Console.WriteLine(file.Name); } } fileThreadLoop = false; }; fileThread = new Task(action); fileThread.Start(); //Task t1 = new Task(action); //t1.Start(); fileItemInListView = new ListViewItem[totalFiles]; string[] fnames = new string[totalFiles]; Parallel.For(0, totalFiles, (i) => { fileItemInListView[i] = new ListViewItem(files[i].Name); //fileItemInListView[i].ImageKey = files[i].Name; if (trackedFilePath.Contains(files[i].FullName)) { fileItemInListView[i].ImageKey = files[i].Name; } else { fileItemInListView[i].ImageKey = "file"; } fnames[i] = files[i].Name; //fileRecordInListView[i] = files[i].Name; //fileRecordInListView.Add(files[i].Name); //imgs.Images.Add(files[i].Name, System.Drawing.Icon.ExtractAssociatedIcon(files[i].FullName)); }); fileRecordInListView.AddRange(fnames); listView1.Items.AddRange(fileItemInListView); //iList1.Images.AddRange(imgs.Images); //t1.Wait(); curFileIndeks = 0; //ImagePlacer.Enabled = true; }