전 WPF에 완전히 익숙하지 않습니다.이 프로세스는 스레드를 사용하려고 시도하는 동안 TreeView에 전체 드라이브 구조 (폴더, 파일)를 나열하는 간단한 WPF 응용 프로그램을 만들었습니다. GetFolderTree() 메서드를 실행하고 UI가 응답하지 않게되는 것을 방지하기 위해 몇 가지 문제가 있습니다. FolderBrowser라는 클래스를 만들었습니다.이 클래스는 모든 클래스 구조에서 TreeViewItem의 새 인스턴스를 만듭니다.간단한 WPF 응용 프로그램에서 멀티 스레딩을 사용하는 경우의 문제
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;
}
}
}
가 어떻게이 새 스레드 내부의 새로운 컨트롤 인스턴스를 만들 수 있습니다 :이 코드입니다, 트 리뷰를 채우는 반환 값으로 사용되는 말에 드라이브 구조를 보유하고? 사전에
감사
은 ... 몇 년 새 응답으로 게시 할 예정입니다 min –