Bonsoir tout le monde,
Je viens de faire iun programme visant à récupérer dans une textbox, tous les chemin des fichiers texte de mon disque dur au fur et à mesure de la recherche, un peu comme le programme de recherche sous windows (la finalité étant de faire un programme complet de recherche de fichiers).
En expérimentant mon programme je me suis appeçu que mon thread ne fonctionne pas... Il n'affiche rien pourtant il appelle bien la bonne fonction!
Tout ce que je veux ici, c'est afficher le répertoire ou l'ordinateur cherche pendant qu'il affiche les fichiers dans une listview, d'ou l'utilité du thread (si j'ai bien compris!).
Ci-joint le code, en espérant que quelqu'un va m'aider...
Merci d'avance et à bientôt.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//déclaré ici car besoin dans AfficherChemin() (voir Thread)
string nomFichier;
private void button1_Click(object sender, EventArgs e)
{
//rep ou commencer la recherche
DirectoryInfo rep = new DirectoryInfo(@"C:\");
//Thread servant à afficher les fichier trouvé par Chercher(rep);
Thread t = new Thread(new ThreadStart(AfficherChemin));
t.Name = "TChemin";
t.Start();
//fonction de recherche (récurcive)
Chercher(rep);
}
public void Chercher(DirectoryInfo Rep)
{
//récupère le chemin complet du fichier
nomFichier=Rep.FullName;
//dans le répertoire courant on cherche tous les fichiers
//dont l'extension est .txt
foreach (FileInfo f in Rep.GetFiles("*.txt"))
{
//et on on crée un item avec les chemeins et tailles de ces fichiers
//item qui sera ajouté à la listview
ListViewItem it = new ListViewItem();
it.Text = f.FullName;
it.SubItems.Add(f.Length.ToString());
listView1.Items.Add(it);
}
//si il y a des sous répertoires on rappelle "Chercher();" (principe de la récursivité)
DirectoryInfo[] a = Rep.GetDirectories();
foreach (DirectoryInfo b in a)
{
Chercher(b);
}
}
//le thread appelle cette fonction qui affiche
//dans une textBox multiligne, tous les chemins
//des fichier texte sur un disque (C:).
public void AfficherChemin()
{
while (true)
{
textBox1.Text = nomFichier;
Thread.Sleep(0);
}
}
}
}
Configuration: Windows XP
Visual Studio 2005