Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pb actualiser RichTextBox en cours de traitement

4 réponses
Avatar
psykzix
Bonjour

Je débute en C sharp et je voudrais explorer les dossiers du disque et
afficher en cours de traitement les noms des répertoires rencontrés.

Seulement, l'affichage ne se produit qu'à la fin du traitement.

Pourriez-vous me donnez des pistes svp ?

Merci !

c'est une application WPF dont voici le code principal :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
using System.Threading;

namespace WpfApplication1
{
/// <summary>
/// Logique d'interaction pour Window1.xaml
/// </summary>
public partial class Window1 : Window
{
private string racine = @"C:\Program Files\Adobe\Acrobat
8.0\Acrobat"; // Pour tests

private string texte = "";
public delegate void DelegueAjoutTexte();
public event DelegueAjoutTexte TexteEvent;

public Window1()
{
InitializeComponent();
TexteEvent += TexteAjout;
}

private void demarrer_Click(object sender, RoutedEventArgs e)
{

explorer();
}

public void explorer()
{
string chemin = racine;
DirectoryInfo dirInfo = new DirectoryInfo(chemin);
if (dirInfo.Exists)
{
explorer(chemin, dirInfo);
}
else
{
texteZone.AppendText("ERREUR : le répertoire \"" +
chemin + "\" n'existe pas.");
}
}

private void explorer(String chemin, DirectoryInfo dossier)
{
DirectoryInfo[] repertoires = dossier.GetDirectories();
texte = chemin;

//TexteAjout();
declencherEvent();

string path = "";
foreach (DirectoryInfo rep in repertoires)
{
path = chemin + @"\" + rep.ToString();
explorer(path, rep);
}
}

private void declencherEvent()
{
if (this.TexteEvent != null)
{
this.TexteEvent();
}
}

public void TexteAjout()
{
texteZone.AppendText(texte + "\r");
}
}
}

4 réponses

Avatar
Jérémy Jeanson
Bonjour psykzix,

Ce que tu souhaite faire entre dans le context du BackGroundWorker,
C'est un control très sympathique qui vas te permettre d'effectuer une
tache de font tout en mettant ton interface à jour.

Pour plus d'informations voici le lien vers la MSDN:
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
psykzix
Jérémy Jeanson a écrit :
Bonjour psykzix,

Ce que tu souhaite faire entre dans le context du BackGroundWorker,
C'est un control très sympathique qui vas te permettre d'effectuer une
tache de font tout en mettant ton interface à jour.

Pour plus d'informations voici le lien vers la MSDN:
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx




Bonjour
Oui cela semble être une solution.
Malheureusement, j'ai un peu de mal à utiliser BackgroundWorker dans mon
application WPF.
Les exemples dont je dispose sont avec windowsForm.
Merci de votre aide!
Avatar
Jérémy Jeanson
Bonjour psykzix,

Pas de soucis, il suffisait de dire qu'il s'agissait de WPF ;)

La page suivante explique plutôt bien l'utilisation de BackGroundWorker WPF:
http://msdn.microsoft.com/fr-fr/magazine/cc163328.aspx

--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
psykzix
Jérémy Jeanson a écrit :
Bonjour psykzix,

Pas de soucis, il suffisait de dire qu'il s'agissait de WPF ;)

La page suivante explique plutôt bien l'utilisation de BackGroundWorker
WPF:
http://msdn.microsoft.com/fr-fr/magazine/cc163328.aspx




:)

Je cherche depuis que j'ai lu ton message et j'avais effectivement
trouvé cette page.
L'ennui c'est que je dois avoir un soucis de dépendance ou de référence
manquante et je ne trouve pas pour le moment lesquelles.
Va falloir que j'étudie la question plus en détail.

En tout cas merci encore! ;)