我想在按下按钮时显示每个文件的路径。 我现在拥有的是一个迭代文件夹并显示路径的函数,但仅在该函数完成时才显示:
public void ProcessDirectory(string targetDirectory)
{
// Process the list of files found in the directory.
try
{
var fileEntries = Directory.GetFiles(targetDirectory);
foreach (var fileName in fileEntries)
{
ProcessFile(fileName);
}
}
catch (Exception e){}
// Recurse into subdirectories of this directory.
try
{
var subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach (string subdirectory in subdirectoryEntries)
ProcessDirectory(subdirectory);
}
catch (Exception e){}
}
public void ProcessFile(string path)
{
myListBox.Items.Add(path);
}
这意味着我必须等待才能做其他事情。 如何在函数运行时立即显示文件的路径,这样我就不必等待函数完成,在列表框中显示之前获取所有路径?
最佳答案
我不记得在哪里遇到了这段代码,但是如果您将 ProcessFile 方法修改为类似的内容,它将在每个项目添加到列表后更新您的 UI。
public void ProcessFile(string path)
{
myListBox.Items.Add(path);
myListBox.ScrollIntoView(myListBox.Items[myListBox.Items.Count-1]);
Dispatcher.Invoke(new Action(delegate { }), DispatcherPriority.Background);
}
我想我记得在某处读到过,由于可能会发生许多其他问题,因此不建议使用此“黑客”,但我不记得它是什么或在哪里读到它。然而它确实完成了这项工作。
也许其他人可以告诉我们这些问题是什么......
关于c# - 在线程中使用 C# 将字符串添加到 WPF 中的列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464359/