Je suis totalement nouveau sur WPF, j'ai créé une simple application WPF qui répertorie la structure complète du lecteur (dossier, fichiers) en TreeView, car ce processus prend du temps, j'ai essayé d'utiliser un thread pour exécuter la méthode GetFolderTree() et empêcher l'IU de ne plus répondre, mais je rencontre des problèmes, j'ai créé une classe nommée FolderBrowser où j'ai tout ce code de collecte de structure, dans cette classe je crée une nouvelle instance de TreeViewItem détient structure d'entraînement à la fin il est utilisé comme valeur de retour pour alimenter le TreeView, Voici le code:Problème lors de l'utilisation du multithread avec l'application 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;
}
}
}
Comment pourrais-je créer de nouvelles instances de contrôle dans ce nouveau fil?
Merci à l'avance
de travail sur un petit échantillon en utilisant XAML/MVVM ... afficherons une nouvelle réponse dans quelques mins –