У меня есть приложение, в котором я перечисляю все файлы из выбранной папки. И у меня есть класс с именем FileManager, который содержит, AsyncBindingList, который связан с моим listBox на форме. вот код,
public class frmWriter : Form
{
FileManager filemanager;
public frmWriter()
{
this.listBoxFilesFolder.DataSource = fileManager.FilesFolderList;
}
private void btnAddFolder_Click(object sender, EventArgs e)
{
FolderBrowserDialog FolderDialog = new FolderBrowserDialog();
FolderDialog.ShowNewFolderButton = false;
if (FolderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//if I call this function in the following way, My application will not give
//any response to user mouse click.
filemanager.AddFileFolder(FolderDialog.SelectedPath);
}
}
}
public class FileManager
{
AsyncBindingList<string> FilesFolderList;
public FileManager()
{
FilesFolderList = new AsyncBindingList<string>();
}
public void AddFileFolder(string FolderSelected)
{
string[] Files = Directory.GetFiles(FolderSelected);
//List<string> ValidFiles = new List<string>();
foreach (string file in Files)
{
if (ValidateFile(file))
{
//Do some work
}
}
string[] Folders = Directory.GetDirectories(FolderSelected);
foreach (string folder in Folders)
GetFilesFromFolder(folder);
FilesFolderList.Add(FolderSelected);
}
private bool ValidateFile(string FilePath)
{
//This Function takes time to validate the file
return true;
}
}
Как лучше всего вызывать этот метод: filemanager.AddFileFolder, поэтому пользовательский интерфейс всегда реагирует на щелчки мышью.
если у вас есть какой-либо код или ссылки, пожалуйста, напишите.
Спасибо,
Harsha