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 :

Cross Threading dans une class perso [Débutant]


Sujet :

VB.NET

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

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 111
    Points : 94
    Points
    94
    Par défaut Cross Threading dans une class perso
    Bonjour à tous,

    Dans une class perso j'ai crée une tâche asynchrone qui à un moment donné doit remonté un événement pour mettre à jour mon formulaire.

    Hors je me retrouve avec une exception d'opération inter-thread.

    Tout les codes exemples que j'ai trouvé sur le net utilisent toujours la méthode : or celle-ci n'est pas disponible dans ma class.

    Comment puis-je procéder ?

    Merci par avance !

    Ma class :

    FileWatch : procédure qui lance le thread
    Processthreading : Le thread
    OnPropertyChanged : remonte l'événement

    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
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
    Imports System.IO
    Imports System.ComponentModel
    Imports System.Threading
     
     
    Public Class CatiaFileWatcher
        Inherits System.Windows.Forms.BaseCollection
        Implements INotifyPropertyChanged
        Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
     
        Private _FullFileName As String = Nothing
        Private WithEvents _Version As String = Nothing
        Private WithEvents _Release As String = Nothing
        Private WithEvents _Hotfix As String = Nothing
     
        Const _TextFilter As String = "LastSaveVersion"
        Private _TempFileName As String = My.Computer.FileSystem.SpecialDirectories.Temp + "\CatiaWatcherOut.txt"
        Private MyProcess As New Process
     
        Public ReadOnly Property Hotfix() As String
            Get
                Return _Hotfix
            End Get
        End Property
     
        Public ReadOnly Property Release() As String
            Get
                Return _Release
            End Get
        End Property
     
        Public ReadOnly Property Version() As String
            Get
                Return _Version
            End Get
        End Property
     
        Public Property FullFileName() As String
            Get
                Return _FullFileName
            End Get
            Set(ByVal value As String)
                _FullFileName = value
            End Set
        End Property
     
        Public Sub FileWatch()
     
            Dim StartInfo As New ProcessStartInfo
     
            Try
                My.Computer.FileSystem.DeleteFile(_TempFileName)
            Catch ErrNotFound As FileNotFoundException
     
            Catch ErrElse As Exception
                MsgBox(ErrElse.Message)
                Exit Sub
     
            End Try
     
            With StartInfo
                .WindowStyle = ProcessWindowStyle.Hidden
                .UseShellExecute = False
                .RedirectStandardOutput = True
                .FileName = "cmd.exe"
                .Arguments = "/C findstr /c:" + Chr(34) + _TextFilter + Chr(34) + " " + FullFileName '+ " > " + _TempFileName
            End With
            MyProcess.StartInfo = StartInfo
     
            Dim ThreadProcess As New Thread(AddressOf ProcessThreading)
     
            ThreadProcess.Start()
     
     
        End Sub
     
        Private Sub ProcessThreading() 'Process As Process, TempfileName As String)
     
            MyProcess.Start()
            MyProcess.WaitForExit()
     
            Dim ReadValues As String = Nothing
     
            Using Sr As StreamReader = MyProcess.StandardOutput 'New StreamReader(_TempFileName, System.Text.Encoding.ASCII)
                Do While Sr.EndOfStream = False
                    ReadValues = String.Concat(ReadValues, ChrW(Sr.Read))
                Loop
            End Using
     
            _Version = ReadParameters(ReadValues, _TextFilter, "<Version>")
            OnPropertyChanged("Version")
            _Release = ReadParameters(ReadValues, _TextFilter, "<Release>")
            OnPropertyChanged("Release")
            _Hotfix = ReadParameters(ReadValues, _TextFilter, "<HotFix>")
            OnPropertyChanged("Hotfix")
     
     
        End Sub
     
     
        Function ReadParameters(ByVal TextToRead As String, ByVal StartString As String, ByVal ParametreName As String) As String
     
            Dim Start As Integer = TextToRead.IndexOf(StartString)
            Dim StartBalise As Integer = TextToRead.IndexOf(ParametreName, Start)
            Dim LengthBalise As Integer = ParametreName.Length
            Dim EndBalise As Integer = TextToRead.IndexOf("/" + ParametreName, Start)
     
            Try
                Return TextToRead.Substring(StartBalise + LengthBalise, EndBalise - (StartBalise + LengthBalise))
            Catch
                Return "Not able to read " + ParametreName + " value."
            End Try
     
     
        End Function
     
        Protected Sub OnPropertyChanged(ByVal name As String)
     
            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(name))
        End Sub
     
     
    End Class

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system.windows.forms.openforms(0).invoke
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 111
    Points : 94
    Points
    94
    Par défaut
    Merci pour ta réponse, ça ma permis d'approfondir mes recherche et je sui tombé sur ça :
    http://www.codeproject.com/Articles/...-Other-Threads

    Et ca fonctionne.

    Merci !

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

Discussions similaires

  1. Thread dans une classe et copie
    Par Markand dans le forum SL & STL
    Réponses: 5
    Dernier message: 31/05/2013, 23h50
  2. Utiliser les méthodes ror dans une class perso
    Par BakaOnigiri dans le forum Ruby on Rails
    Réponses: 10
    Dernier message: 01/02/2010, 12h01
  3. Thread dans une classe
    Par superpok dans le forum C#
    Réponses: 8
    Dernier message: 22/08/2007, 02h20
  4. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 18h16

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