Accueil > > > THREADER SIMPLEMENT UNE CLASSE POUR INTERAGIR AVEC UNE FORM
THREADER SIMPLEMENT UNE CLASSE POUR INTERAGIR AVEC UNE FORM
Information sur la source
Description
Il s'agit d'une classe dont la procédure principale fonctionne sur un Thread différent si une Form a été indiquée dans le constructeur (ici, la procédure ne fait rien à par se reposer...lol). Le pricincipe de cette classe est d'avoir un évenement permettant de communiquer entre le Thread et la Form... je sais qu'il en doit exister pas mal sur le principe de L'Invoke des "Controles", mais j'ai perso cherché un moment avant de trouver un truc simple. Je trouve donc que cette manière de procéder est très simple, et encore plus lors de l'utilisation de la classe (voir le zip). Ici, le délégué passe en paramètre des informations de progression, mais on peux imaginer passer n'importe quels autres données.
Source
- using System;
- using System.Text;
- using System.Windows.Forms;
- using System.Threading;
-
- namespace ThreadWinForm
- {
- /// <summary>
- /// Modèle pour les transmitions de messages entre un Thread et une Form
- /// </summary>
- /// <param name="Value">Pourcentage d'avancement du Thread</param>
- /// <param name="Message">Message correspondant à l'avancement</param>
- public delegate void OnProgressHandler(int Value, string Message);
- /// <summary>
- /// Classe dont l'action principale fonctionne sur un Thread
- /// </summary>
- public class ThreadProgress
- {
- /// <summary>
- /// Constructeur sans Form
- /// </summary>
- public ThreadProgress() { }
- /// <summary>
- /// Constructeur avec Form
- /// </summary>
- /// <param name="FormStartThread">Form sur laquelle interagir</param>
- public ThreadProgress(Form FormStartThread)
- {
- _formStartThread = FormStartThread;
- }
-
- private Thread myThread;
- /// <summary>
- /// Evenement de progression du Thread
- /// </summary>
- public event OnProgressHandler OnProgress;
- private Form _formStartThread;
- /// <summary>
- /// Form sur laquelle interagir
- /// </summary>
- public Form FormStartThread
- {
- get { return _formStartThread; }
- set { _formStartThread = value; }
- }
-
- /// <summary>
- /// Procédure de lancement du Thread
- /// </summary>
- public void Start()
- {
- if (OnProgress != null && _formStartThread != null)
- myThread = new Thread(new ThreadStart(ActionThreadMessForm));
- else
- myThread = new Thread(new ThreadStart(ActionThreadNoMess));
- myThread.Start();
- }
-
- /// <summary>
- /// Lancement du Thread avec traitement du délégué
- /// </summary>
- private void ActionThreadMessForm()
- {
- for (int i = 1; i <= 100; i++)
- {
- Thread.Sleep(100);
- try
- {
- _formStartThread.Invoke(OnProgress, i, string.Format("Vous êtes à {0}%", i));
- }
- catch
- {
- myThread.Abort();
- }
- }
- }
-
- /// <summary>
- /// Lancement du Thread seul
- /// </summary>
- private void ActionThreadNoMess()
- {
- for (int i = 1; i <= 100; i++)
- {
- Thread.Sleep(100);
- }
- }
- }
- }
using System;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace ThreadWinForm
{
/// <summary>
/// Modèle pour les transmitions de messages entre un Thread et une Form
/// </summary>
/// <param name="Value">Pourcentage d'avancement du Thread</param>
/// <param name="Message">Message correspondant à l'avancement</param>
public delegate void OnProgressHandler(int Value, string Message);
/// <summary>
/// Classe dont l'action principale fonctionne sur un Thread
/// </summary>
public class ThreadProgress
{
/// <summary>
/// Constructeur sans Form
/// </summary>
public ThreadProgress() { }
/// <summary>
/// Constructeur avec Form
/// </summary>
/// <param name="FormStartThread">Form sur laquelle interagir</param>
public ThreadProgress(Form FormStartThread)
{
_formStartThread = FormStartThread;
}
private Thread myThread;
/// <summary>
/// Evenement de progression du Thread
/// </summary>
public event OnProgressHandler OnProgress;
private Form _formStartThread;
/// <summary>
/// Form sur laquelle interagir
/// </summary>
public Form FormStartThread
{
get { return _formStartThread; }
set { _formStartThread = value; }
}
/// <summary>
/// Procédure de lancement du Thread
/// </summary>
public void Start()
{
if (OnProgress != null && _formStartThread != null)
myThread = new Thread(new ThreadStart(ActionThreadMessForm));
else
myThread = new Thread(new ThreadStart(ActionThreadNoMess));
myThread.Start();
}
/// <summary>
/// Lancement du Thread avec traitement du délégué
/// </summary>
private void ActionThreadMessForm()
{
for (int i = 1; i <= 100; i++)
{
Thread.Sleep(100);
try
{
_formStartThread.Invoke(OnProgress, i, string.Format("Vous êtes à {0}%", i));
}
catch
{
myThread.Abort();
}
}
}
/// <summary>
/// Lancement du Thread seul
/// </summary>
private void ActionThreadNoMess()
{
for (int i = 1; i <= 100; i++)
{
Thread.Sleep(100);
}
}
}
}
Historique
- 16 avril 2007 14:33:18 :
- ajout de commentaires et correction de fautes
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
evenement keypress [ par Thanos_the_yopper ]
j'ai un window.form et je voudrais que quand j'appuis sur Echap, ca le ferme .... j'ai rajouter un evenement keypress sur le form, mais ca fait rien d
Recherche d'un evenement sur un Form [ par oxboz ]
Salut !! Voila j'ai une question surement bidon. J'ai la fenetre principal de mon projet. Quand je le lance je souhaite que cette fenêtre s'aff
Problème de thread, socket et form [ par Florynth ]
Bon pas très compliqué,j'ai créé un thread qui écoute un portaprès je pèse sur un bouton qui fait connectédonc il créé un socket le connect au port en
Problème de thread (encore) [ par Bidou ]
En fait, je dois charger des données dans un Listview, et ca peut prendre du temps.Donc pendant le temps de chargement et d'affichage, j'affiche
evenement "Form_Unload" [ par fred65200 ]
Bonjour à tous, je cherche la synthaxe pour déclencher un evenement à la fermeture d'un Form. Pour l'instant je n'ai rien trouvé.
Thread et menu contextuel [ par seblx ]
Bonjour à tous,J'ai une form qui enregistre un menu contextuel (Shell) et qui lance un thread supplémentaire. Mon menu rajoute une action "S
actualisation de la form a partir d'un thread. [ par bwoufy82 ]
Bonjour a tous.Voiladepuis 3 jours je n arrive pas a trouver comment faire pour que mon thread accede a ma form.J'esxplique se que je cherche a faire
Problème de Form [ par emmanuel9 ]
Bonjour à tous, En faite je voudrais faire apparaitre une Form par dessus une autre pendant 3 seconde. Donc dans l'évenvement Load je fais
ouvrir une form enfant dans un thread différent [ par bossun ]
salut,Dans une appli MDI, ne veux ouvrir mes feilles enfants dans un thread différent à chaque fois. donc je voudrais utiliser le backgroudnworker pou
Ouvrir plusieurs instances d'un même thread [ par immerczeck ]
Bonjour!mon problème est le suivant : à partir d'un thread, je voudrais créer "à l'infini" des instances d'une nouvelle fenêtre, chacune avec un titre
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|