Probleme de form en C# [Résolu]

Messages postés
17
Date d'inscription
vendredi 16 mai 2008
Dernière intervention
17 octobre 2013
- - Dernière réponse :  leclerro19 - 30 sept. 2013 à 11:21
Bonjour,
J'ai un petit problème :) .
en fait j'ai crée une application qui a seulemet une forme et un bouton analyse.
dans le bouton analyse j'ai fait une seule instruction qui est un Sleep de 30 min .
quand je lance l'application et que j'ouvre une autre fenetre au dessus de mon application apres reduction de la fençetre qui a été ouverte l'image reste sur l'application et m'empeche de retourner sur l'application pour faire annuler.
Merci de votre aide . on m'a dis de modifier une propriété que je ne connais pas.
Merci pour votre aide
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
17
Date d'inscription
vendredi 16 mai 2008
Dernière intervention
17 octobre 2013
1
1
Merci
je ne vois pas comment gerer le thread dont tu parles @sebmafate

@mindongo voila le code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(10000);
        }
    }
}
  

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de leclerro19
Messages postés
14384
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 février 2019
124
1
Merci
Yo,
Voici comment, de manière simpliste (je n'ai pas testé ni pensé aux conséquences), on lance un Thread:

public partial class Form1 : Form
{
    Thread _Thread;        
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (_Thread == null)
        {
            _Thread = new Thread(new ThreadStart(ThreadMethod));
        }
        _Thread.Start();
        // attention au 2e appui sur le bouton: quoi faire?
    }

    private void ThreadMethod()
    {
        // ton analyse ici
        Thread.Sleep(10000);
    }
} 

@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
49
1
Merci
en complément à Buno :

public partial class Form1 : Form
{
    Thread _Thread;        
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (_Thread == null)
        {
            _Thread = new Thread(new ThreadStart(ThreadMethod));
            _Thread.Start();
        }
    }

    private void ThreadMethod()
    {
        // ton analyse ici
        Thread.Sleep(10000);

        _Thread = null;
    }
} 

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de sebmafate
Messages postés
14384
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 février 2019
124
1
Merci
Tu ne peux pas modifier l'UI en dehors du Thread principal

public void ThreadMethod()
{
    // update UI
    this.Invoke((MethodInvoker)delegate {
        label1.Text = "---" + i.ToString();
    });
}

@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
107
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
11 mars 2018
2
0
Merci
Dépose ton code et on vera
Commenter la réponse de remiki90
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
49
0
Merci
Bonjour,

Il faut que tu lances ton traitement dans un autre thread que celui qui gère l'affichage de la fenêtre sinon elle ne se redessine pas et il est impossible de cliquer sur les boutons.

Sébastien
Commenter la réponse de sebmafate
0
Merci
Bonjopur,
Merci à tous pour votre aide.
le code que vous m'avez corrigé fonctionne bien mais quand j'ajoute un label sur ma form, je n'arrve pas à modifier son texte.

voici le code.
Merci pour votre temps que vous m'accordé.



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace testThread
{
    public partial class Form1 : Form
    {
        System.Threading.Thread _Thread;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (_Thread == null)
            {
                _Thread = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadMethod));
                _Thread.Start();
            }

        }

        public void ThreadMethod()
        {
            // ton analyse ici

            for (int i = 0; i < 5; i++)
            {
                System.Threading.Thread.Sleep(10000);
                label1.Text = "---" + i.ToString();
            }

            _Thread = null;
        }


    }
}

Commenter la réponse de leclerro19
0
Merci
So Great .You are the best @Sébastien and @Buno . Thanks
BunoCS
Messages postés
14384
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 février 2019
124 -
N'oublie pas de marquer la discussion comme résolue si c'est le cas ;)
Commenter la réponse de leclerro19

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.