IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Vb.net - remontée d'événements/ information depuis sous classes


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut Vb.net - remontée d'événements/ information depuis sous classes
    Bonjour,

    J'ai pour habitude de travailler en Vb.net pour de l'ASP.Net.

    En réalisant une petite application perso en Winform, je bute sur des éléments dont je n'ai pas l'habitude
    d'utiliser. En effet voici mon problème :

    J'ai un Winform dans lequel j'ai un bouton et un label (faisont simple pour le moment)

    Lorque je clique sur le bouton, j'ai une instanciation d'une classe dénommé "Listing" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim lst as new VideoListing.Listing(...)
    lst.scan
    à l'interieur de cette classe listing, j'ai d'autres sous classe appelées, ainsi de suite pour différents traitements.

    durant les traitements des sous classes, je voudrais remonter des informations qui sont traité dans les sous classes, par exemple :
    • Le nombre total de fichier trouvé
    • le type de traitements en cours les fichiers
    • Autant de fichiers traité / Total



    Pour le moment dans un label pour test.

    Par la suite dans le formulaire je mettrais une progresse bar par exemple avec par exemple les différents traitements en cours dans un label
    Traitement en cours : traitement x/y - extraction des infos.
    x 100% total

    Comment dois-je faire ?
    remonter de classe parent en classe parent ?

    Merci de votre aide.
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Si tes sous-classes son public on peut y accéder directement 'lst.scan.a.b.c'.
    Si tu souhaite que les sous-classes soit masqués tu doit implémenter une méthode, dans ta classe 'scan', qui te retournera l'information souhaité.

    Tu peut poster un exemple simple avec quelques classes pour mieux comprendre.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Bonsoir,

    Ne voulant pas recopier tout le code, j'ai essayé d'être clair et d'expliquer un peut ce qui ce passe.

    J'ai une partie du projet pour la partie formulaire et l'autre projet pour ma Dll.

    Lors du clic sur le bouton dans le formulaire, je fais un appel a une classe (dll) qui va scanner un répertoire source.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim lst As New VideoListing.Listing(param1, param2)
    lst.Scan()
    Chaque élément trouvé est ensuite analysé, récupération du nom du groupe (répertoire)
    Je regarde donc de combien de fichier est composés le répertoire trouvé et s'il a un sous répertoire "spécifique"
    Ensuite je fais appel a une classe pour traité les fichiers "du groupe".

    Ensuite pour chaque fichier je vais avoir une extraction spécifique avec une décomposition spécifique. (oui ça fait beaucoup de spécifique)
    J'utilise pour cela MediaInfo que j'ai dans une classe d'import dll.

    Un fichier vidéo est composé de plusieurs type de Piste (video,audio,Texte etc)
    ma 1ère phase par fichier et de compter le nombre de type de piste puis pour chaque piste son nombre en effet je peux avoir plusieurs piste de type audio.

    Donc par type de piste je scan le contenu par rapport à un template de scan que j'ai défini (tout en haut dans ma 1ère classe, car je prévois qu'on puisse sélectionner des templates des infos à extraire parmi une liste)

    Donc pour chaque étape d'avancement, je veux avoir un retour, quand on compte le nombre de "groupe" trouvé, le nombre de fichier traité etc... pour que dans le formulaire on sache ou se trouve traitement.
    Nota : j'ai du Parallel (Parallel.ForEach(Me.Liste, Sub(Media) ) aussi dans le code qui a eu pour but d’accélérer par 5 certains traitements, j'ai fais des tests dans chaque boucle de traitement pour voir ou le gain pouvait être substantiel (c'est lorsque je fais appel à chaque fichier à extraire de manière asynchrone, plus bas lors de l'ouverture par mediainfo, je perdais plus de temps). Donc même dans leur taches d’exécution je voudrais savoir où ça en est !

    Et pourquoi ?

    Ben par exemple dans une grille dans laquelle on aurait chaque média trouvé, composé de x fichiers et dedans on aurait une colonne de traitement 2 piste audio 1/2 extraction en cours x% "extraction video y% etc...
    un peut comme une logiciel de torrent ou autre

    Et du coup l'utilisateur peut naviguer pour suivre le processus qui peut devenir long en fonction du nombre de média.

    Mais ne maîtrisant pas les événements et les retours d'affichage (j'ai plus l'habitude du séquentiel), c'est pourquoi j'ai besoin d'aide pour comprendre cette partie qui m'est inconnue.

    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Public Class Listing
    	Private _typeSource As TypeSourceVideo
    ...
    Private Sub ScanMedia
    	Dim MesMedia As New MediaCollection(_source)
    	MesMedia.Scan()
    End
     
    Public Sub Scan()
     
            Select Case _typeSource           
                ScanMedia()
    			...
    ...
    End Class
     
    Public Class MediaCollection
     
    	Public MediaListe As List(Of Media)
     
    	Public Sub ScanMedia()
    	...
    	if mediaFile.count>0 then TraitementFichier(mediaFile)
    	End sub
     
     
    	Private sub TraitementFichier(as list(of media))
    		'Appel à une autre sous classe chargé de prendre les différents fichiers composant le media
     
     
    	end sub
     
     
    End Class
     
    Public Class ExtractionInfosMedia
     
    	private _files as fileinfo
     
    	...
     
    	Public sub ExtractInfo()
    	end sub
     
     
     
    end Class
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Points : 336
    Points
    336
    Par défaut
    Overridable, MustOverride, Override pourraient peut-être t'aider (la MSDN explique le bouzin )
    "Hope for the best, but prepare for the worst."

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je ne peut pas me prononcer plus sur du code vb.net ...

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par casiii Voir le message
    Overridable, MustOverride, Override pourraient peut-être t'aider (la MSDN explique le bouzin )
    Bonjour,

    Malheureusement, je n'ai pas d'héritage entre les classes.
    J'ai vu ceci : https://msdn.microsoft.com/fr-fr/library/hy3sefw3.aspx
    Mais mes classes n'ont aucun intérêt a être hérité entre elle.
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu as des classes qui contiennent d'autres classes. Chacune faisant des traitements, tu voudrais pouvoir remonter jusqu'à ton IHM les différents avancement de chacun de ces traitements.
    Est-ce bien ça ?
    Pour ce faire, tu utilises en effet les events. Chaque classe effectuant un traitement comporte des events qu'elle lèvera. La classe owner de cette classe peut s'abonner à l'event afin d'être notifiée. Elle peut elle même alors déclancher un évènement afin de remonter l'info et ainsi de suite jusqu'à ton IHM par exemple. Attention, qui dit abonnement dit aussi désabonnement sinon fuites mémoires. Après l'abonnement et le désabonnement peut se faire sur la durée de vie de l'objet et non sur l'éxecution du traitement comme dans mon exemple.
    Un petit exemple simple avec 2 classes : TMyClass qui contient TMySubClass qui executera un traitement. A chaque boucle, levée de l'event :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    ' La classe Principale :
    Public Class TMyClass
        Public Event OnChange(sender As Object, e As TOnChangeEventArgs)
     
        Dim subClass As TMySubClass = New TMySubClass
     
        Public Sub Start()
            AddHandler subClass.OnChange, AddressOf OnSubClassChange
            Try
                subClass.Start()
            Finally
                RemoveHandler subClass.OnChange, AddressOf OnSubClassChange
            End Try
        End Sub
     
        Private Sub OnSubClassChange(sender As Object, e As TOnChangeEventArgs)
            RaiseEvent OnChange(sender, e)
        End Sub
    End Class
     
    ' La sous-classe qui executera un traitement :
    Public Class TMySubClass
        Public Event OnChange(sender As Object, e As TOnChangeEventArgs)
     
        Public Sub Start()
            For index As Integer = 1 To 10
                RaiseEvent OnChange(Me, New TOnChangeEventArgs(index))
                Threading.Thread.Sleep(500)
            Next
        End Sub
    End Class
     
    ' La classe paramètre de l'event :
    Public Class TOnChangeEventArgs
        Inherits EventArgs
     
        Public Sub New(value As Integer)
            _Progress = value
        End Sub
     
        Public Property Progress As Integer
    End Class

    Au niveau de la Form :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim aClass As New TMyClass()
            AddHandler aClass.OnChange, AddressOf aClassChange
            Try
                aClass.Start()
            Finally
                RemoveHandler aClass.OnChange, AddressOf aClassChange
            End Try
        End Sub
     
     
        Private Sub aClassChange(sender As Object, e As TOnChangeEventArgs)
            ProgressBar1.Value = e.Progress
        End Sub

    La sous classe qui effectue le traitement est parfaitement inconnue de la Form. La progression passe par la classe owner TMyClass. Attention, ici les traitements ne sont pas parallèlisés. Et j'avoue ne pas avoir tenté ce genre de truc en traitements parallèles... J'espère que ça te donnera quelques billes.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Merci !

    Je viens de lire ton exemple parfaitement clair que j'appliquerais sur un autre exemple ce soir (pour voir si j'ai bien compris ;-))

    Donc en fait je suis obligé, et c'est logique de remonter l'information de l'event à celui qui a instancié la classe, donc par un abonnement.

    J'avais aussi regarder ce qui était "Observer" aussi

    Parce que je me dis que le nombre d'event remonté risque d'être énorme. si on par sur une base de 1000 videos contenu par exemple a 50% par deux fichier on a 1500 fichiers.
    Pour chaque fichier on a 4 pistes minimum ou en moyenne (General,video,audio + soit un autre audio ou sous titre)
    et si je dis que j'ai 5 infos par pistes ont est donc a :

    1000 event (1ère classe vers IHM)
    1500 events (listing des fichiers, vers classe 1)
    4x5 events (car je peux indiquer juste que les infos videos sont extraites ou non, le nombre de piste et idem pour les autres)

    Je pense plus tard représenter pourquoi pas dans un listview

    Video |Taille Total | x fichiers | Progression (nb fichiers en traitement / nb total) | Video x Piste + Progression | audio idem...


    M'enfin, juste pour le moment récupérer les infos pour avoir quelque chose que je puisse exploiter dans l'IHM sans attendre que le traitement soit fini

    Citation Envoyé par ebastien Voir le message
    Bonjour,

    Si j'ai bien compris, tu as des classes qui contiennent d'autres classes. Chacune faisant des traitements, tu voudrais pouvoir remonter jusqu'à ton IHM les différents avancement de chacun de ces traitements.
    Est-ce bien ça ?
    Pour ce faire, tu utilises en effet les events. Chaque classe effectuant un traitement comporte des events qu'elle lèvera. La classe owner de cette classe peut s'abonner à l'event afin d'être notifiée. Elle peut elle même alors déclancher un évènement afin de remonter l'info et ainsi de suite jusqu'à ton IHM par exemple. Attention, qui dit abonnement dit aussi désabonnement sinon fuites mémoires. Après l'abonnement et le désabonnement peut se faire sur la durée de vie de l'objet et non sur l'éxecution du traitement comme dans mon exemple.
    Un petit exemple simple avec 2 classes : TMyClass qui contient TMySubClass qui executera un traitement. A chaque boucle, levée de l'event :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    ' La classe Principale :
    Public Class TMyClass
        Public Event OnChange(sender As Object, e As TOnChangeEventArgs)
     
        Dim subClass As TMySubClass = New TMySubClass
     
        Public Sub Start()
            AddHandler subClass.OnChange, AddressOf OnSubClassChange
            Try
                subClass.Start()
            Finally
                RemoveHandler subClass.OnChange, AddressOf OnSubClassChange
            End Try
        End Sub
     
        Private Sub OnSubClassChange(sender As Object, e As TOnChangeEventArgs)
            RaiseEvent OnChange(sender, e)
        End Sub
    End Class
     
    ' La sous-classe qui executera un traitement :
    Public Class TMySubClass
        Public Event OnChange(sender As Object, e As TOnChangeEventArgs)
     
        Public Sub Start()
            For index As Integer = 1 To 10
                RaiseEvent OnChange(Me, New TOnChangeEventArgs(index))
                Threading.Thread.Sleep(500)
            Next
        End Sub
    End Class
     
    ' La classe paramètre de l'event :
    Public Class TOnChangeEventArgs
        Inherits EventArgs
     
        Public Sub New(value As Integer)
            _Progress = value
        End Sub
     
        Public Property Progress As Integer
    End Class

    Au niveau de la Form :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim aClass As New TMyClass()
            AddHandler aClass.OnChange, AddressOf aClassChange
            Try
                aClass.Start()
            Finally
                RemoveHandler aClass.OnChange, AddressOf aClassChange
            End Try
        End Sub
     
     
        Private Sub aClassChange(sender As Object, e As TOnChangeEventArgs)
            ProgressBar1.Value = e.Progress
        End Sub

    La sous classe qui effectue le traitement est parfaitement inconnue de la Form. La progression passe par la classe owner TMyClass. Attention, ici les traitements ne sont pas parallèlisés. Et j'avoue ne pas avoir tenté ce genre de truc en traitements parallèles... J'espère que ça te donnera quelques billes.
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par conan76 Voir le message
    Donc en fait je suis obligé, et c'est logique de remonter l'information de l'event à celui qui a instancié la classe, donc par un abonnement.
    Oui, après tu peux aussi faire des raccourcis, à savoir que ton IHM peut directement s'abonner à l'event de la sous classe si celle-ci est visible publiquement.
    Maintenant le problème dans ce cas c'est que tu ne peux pas filtrer ce que tu veux rendre visible à l'IHM et l'IHM aura accès à tout ton objet sous classe...

    Concernant le nombre d'events, tout dépend de ce que tu en fais derrière. Regarde un control le nombre d'event MouseMove qu'il lève ;-)

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Oui en effet, pour la souris, vaut mieux que ce soit réactif

    J'ai fais l'exemple comme tu l'as indiqué (je n'ai volontairement pas mis d'appel a une sous classe

    J'ai un petit problème d'affichage, j'ai mon label avec sa valeur par défaut, puis d'un coup j'ai "10" du coup j'ai augmenté le temps d'attente, mais pareil. Je ne vois pas où est le problème ?

    --- Edit ---
    J'ai trouvé en ajoutant progress.Refresh() j'ai bien la progression de 1 en 1, par contre je ne peux pas bouger mon form pendant que ça travail...
    -----------
    Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
     
            Dim instanceClassePrincipale As New MaClassPrincipale
            AddHandler instanceClassePrincipale.OnChange, AddressOf UpdProgress
            Try
                instanceClassePrincipale.Start()
            Finally
                RemoveHandler instanceClassePrincipale.OnChange, AddressOf UpdProgress
            End Try
     
        End Sub
     
        Private Sub UpdProgress(sender As Object, e As tOnChangeEventArgs)
            progress.Text = e.Progress.ToString
        End Sub
    Classes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Public Class MaClassPrincipale
     
        Public Event OnChange(sender As Object, e As tOnChangeEventArgs)
     
        Public Sub Start()
     
            For index As Integer = 1 To 10
                RaiseEvent OnChange(Me, New tOnChangeEventArgs(index))
                Threading.Thread.Sleep(1000)
            Next
     
        End Sub
     
        'Private Sub OnChange(sender As Object, e As tOnChangeEventArgs)
        'End Sub
     
    End Class
     
    Public Class tOnChangeEventArgs
        Inherits EventArgs
     
        Public Property Progress As Integer
     
        Public Sub New(value As Integer)
            _Progress = value
        End Sub
     
    End Class



    Citation Envoyé par ebastien Voir le message
    Oui, après tu peux aussi faire des raccourcis, à savoir que ton IHM peut directement s'abonner à l'event de la sous classe si celle-ci est visible publiquement.
    Maintenant le problème dans ce cas c'est que tu ne peux pas filtrer ce que tu veux rendre visible à l'IHM et l'IHM aura accès à tout ton objet sous classe...

    Concernant le nombre d'events, tout dépend de ce que tu en fais derrière. Regarde un control le nombre d'event MouseMove qu'il lève ;-)
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par conan76 Voir le message
    par contre je ne peux pas bouger mon form pendant que ça travail...
    C'est normal, ici on n'est pas en multithread, le traitement "long" est exécuté dans le même thread que la form. Pour un cas simple comme celui-ci, tu peux utiliser un BackgroundWorker. Maintenant pour des traitements plus complexes tu peux regarder du coté de l'asynchronisme, du multi-threading ou du parallélisme, mais dans ce cas la mise à jour de l'ihm devient plus délicate.

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/08/2017, 14h20
  2. Réponses: 3
    Dernier message: 30/01/2012, 18h52
  3. [VB.Net] Comment accéder à une propriété de sous-classes ?
    Par druidev dans le forum Windows Forms
    Réponses: 13
    Dernier message: 05/09/2006, 15h14
  4. [VB.NET] Remontée d'évènements
    Par bifidus dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/09/2004, 14h25
  5. exploiter un évènement d'un sous composant dans un
    Par bjl dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/12/2002, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo