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

VB.NET Discussion :

Variable perdu après Backgroudworker [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien de bureau d etude
    Inscrit en
    Avril 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien de bureau d etude
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 111
    Par défaut Variable perdu après Backgroudworker
    Bonjour à tous,

    J'ai créer une classe dans laquelle j’implémente un Backgroundworker.
    Cette classe contient un certain nombre de variable.

    Mon problème est le suivant :
    Lorsque j'appelle Backgroundworker.RunworkerAsync, mes variables se vident complètement, je ne peux donc plus les utiliser.

    Quelqu'un aurait-il une idée ?

    Merci d'avance !

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Mets nous du code .

    C'est quelle variable qui se vident? Il manque bien trop d'information!

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien de bureau d etude
    Inscrit en
    Avril 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien de bureau d etude
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 111
    Par défaut
    Désoler

    Voici un bout de code :

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
    Imports System.IO
    Imports System.ComponentModel
     
    Public Class PictureResizing
     
        Public ProgBarre As ProgressBar
        Public UserForm As Form
        Public TargetSize As Long
        Public WithEvents BCKGW_1 As New BackgroundWorker
     
     
        Public Sub New()
     
            BCKGW_1.WorkerReportsProgress = True
     
        End Sub
     
    #Region "Background"
     
        Private Sub BCKGW_1_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles BCKGW_1.ProgressChanged
     
            ProgBarre.Value = e.ProgressPercentage
     
        End Sub
     
        Private Sub BCKGW_1_RunWorkerCompleted(sender As System.Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BCKGW_1.RunWorkerCompleted
            UserForm.Hide()
     
        End Sub
     
        Private Sub BCKGW_1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BCKGW_1.DoWork
     
     
            PicturesProcessing(e.Argument)
     
        End Sub
     
    #End Region
     
     
        Sub Start(ByVal InputList As List(Of String), ByVal TargetSize As Integer, ByVal Userform As Form, ByVal ProgressBar As ProgressBar)
     
            TargetSize = TargetSize
            ProgBarre = ProgressBar
            Userform = Userform
     
            BCKGW_1.RunWorkerAsync(InputList)
     
        End Sub
     
     
        Private Sub PicturesProcessing(ListOfPictures As List(Of String))
     
            Dim SizeTarget As Long = TargetSize * 1024 * 1024
     
            'Create paket
            Dim TiffPacket As New List(Of String)
            Dim JpgPacket As New List(Of String)
     
            For Each Pict As String In ListOfPictures
                If Path.GetExtension(Pict) = ".jpg" Then
                    JpgPacket.Add(Pict)
                ElseIf Path.GetExtension(Pict) = ".tif" Then
                    TiffPacket.Add(Pict)
                End If
            Next
     
            If TiffPacket.Count > 0 Or JpgPacket.Count > 0 Then
                UserForm.Show()
            Else
                Exit Sub
            End If
     
            BCKGW_1.ReportProgress(0)
     
            If TiffPacket.Count > 0 Then
                PacketTreatment(TiffPacket, SizeTarget)
            End If
     
            BCKGW_1.ReportProgress(50)
     
            If JpgPacket.Count > 0 Then
                PacketTreatment(JpgPacket, SizeTarget)
            End If
     
            UserForm.Hide()
     
        End Sub
     
     
     
     
        Private Sub PacketTreatment(ByVal Packet As List(Of String), ByVal SizeTarget As Long)
            'Weight of packet
            Dim SizeOfJpg As Long = GetSizeOfPacket(Packet)
            Dim ProgressBarStartValue As Long = ProgBarre.Value
            Dim I As Long = 0
            If SizeOfJpg > SizeTarget Then
                'Size Ratio
                Dim CalculatedSizeRatio As Decimal = Math.Round(SizeTarget / SizeOfJpg, 1)
                For Each Pict As String In Packet
                    Dim FileInfo As New FileInfo(Pict)
                    Dim Maxlength As Long = FileInfo.Length * CalculatedSizeRatio
                    ResizeImage(Pict, CalculatedSizeRatio, Maxlength)
                    I = I + 1
                    BCKGW_1.ReportProgress(ProgressBarStartValue + (I / Packet.Count))
     
                Next
            End If
        End Sub
     
     
     
    End Class
    En fait dès que je me trouve dans le thread de travail, les trois variables Public du haut se vident.

    Le code démarre à partir de la procédure "Start"

    D'habitude j'utilise cela dans les Form mais là je bloque.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Mais qu'est ce qui fait que ces variables valent quelque choses avant ton appel? Si c'est censer être initialisié à l'appel de start, il me semble que ca ne sert à rien ce que tu fais, il faut rajouter Me. (je peux me tromper connais pas bien VB).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           Me.TargetSize = TargetSize
            Me.ProgBarre = ProgressBar
            Me.Userform = Userform
    Il faut également voir du coté de ByVal, ByRef mais la aussi mes connaissance vb sont trop faibles.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien de bureau d etude
    Inscrit en
    Avril 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien de bureau d etude
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 111
    Par défaut
    Tout simplement....

    Merci c'était bien cela !


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. variable tronquée apres l'espace dans un formulaire
    Par nicdes dans le forum Langage
    Réponses: 7
    Dernier message: 28/04/2010, 18h57
  2. Créer une variable globale après un window.opener
    Par renaud26 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 29/08/2006, 10h49
  3. Réponses: 9
    Dernier message: 16/03/2006, 20h34
  4. [vb.net] probleme de datasource perdu apres le postback
    Par graphicsxp dans le forum ASP.NET
    Réponses: 12
    Dernier message: 03/03/2006, 16h29
  5. Réponses: 2
    Dernier message: 17/09/2005, 17h43

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