我完全不了解WPF,我创建了一个简单的WPF应用程序,将整个驱动器结构(文件夹,文件)列在TreeView中。由于这个过程需要一段时间,我尝试使用线程来运行GetFolderTree()方法并防止UI变得无响应,但是我遇到了一些问题。我创建了一个名为FolderBrowser的类,在其中包含所有驱动器结构收集代码,在该类中创建了一个新的TreeViewItem实例,它保存驱动器结构,并最终用作返回值来填充TreeView。以下是代码:
using System.IO;
using System.Windows.Controls;
namespace WpfApplication
{
public class FolderBrowser
{
private TreeViewItem folderTree;
private string rootFolder;
public FolderBrowser(string path)
{
rootFolder = path;
folderTree = new TreeViewItem();
}
private void GetFolders(DirectoryInfo di, TreeViewItem tvi)
{
foreach (DirectoryInfo dir in di.GetDirectories())
{
TreeViewItem tviDir = new TreeViewItem() { Header = dir.Name };
try
{
if (dir.GetDirectories().Length > 0)
GetFolders(dir, tviDir);
tvi.Items.Add(tviDir);
GetFiles(dir, tviDir);
}
//catch code here
}
if (rootFolder == di.FullName)
{
folderTree.Header = di.Name;
GetFiles(di, folderTree);
}
}
private void GetFiles(DirectoryInfo di, TreeViewItem tvi)
{
foreach (FileInfo file in di.GetFiles())
{
tvi.Items.Add(file.Name);
}
}
public TreeViewItem GetFolderTree()
{
DirectoryInfo di = new DirectoryInfo(rootFolder);
if (di.Exists)
{
GetFolders(di, folderTree);
}
return folderTree;
}
}
}
我该如何在这个新线程中创建新的控件实例?
提前感谢。