Probleme explorer de fichier en vb [Résolu]

Signaler
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014
-
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014
-
Bonjour,
voila j'ai un souci je suis entrain de créer un explorateur de fichier comme dans Windows mais voila le problème c'est que j'ai une erreur et je n'arrive pas à trouver comment la résoudre.

#Region "   IconIndex Loading Thread"
Private Sub LoadLV1Images()
Dim ts As New ThreadStart(AddressOf DoLoadLv)
Dim ot As New Thread(ts)
#If Ver = 2013 Then
ot.SetApartmentState(ApartmentState.STA)
#Else
ot.ApartmentState = ApartmentState.STA
#End If
Event1.Reset()
ot.Start()
End Sub

Private Sub DoLoadLv()
Dim lvi As ListViewItem
For Each lvi In lv1.Items
lvi.ImageIndex = SystemImageListManager.GetIconIndex(lvi.Tag, False)
Next
Event1.Set()
End Sub
#End Region

Private Sub Lv1_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Lv1.VisibleChanged
If Lv1.Visible Then
SystemImageListManager.SetListViewImageList(Lv1, True, False)
SystemImageListManager.SetListViewImageList(Lv1, False, False)
End If
End Sub

l'erreur ce trouve
For Each lvi In lv1.Items
mais je ne sais pas pourquoi
merci d'avance pour vos réponse

10 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour
l'erreur ce trouve For Each lvi In lv1.Items
Oui mais quel est le message d'erreur ?
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

merci d'avoir répondu
voici le message d'erreur

Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans System.Windows.Forms.dll

Informations supplémentaires : Opération inter-threads non valide : le contrôle 'Lv1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
156
Erreur entre 2 threads (thread perso et thread d'affichage), un grand classique.
Une recherche rapide donne pas mal d'info sur le sujet.

http://www.vbdotnetforums.com/windows-forms/50272-cross-thread-operation.html
http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=194

Aide complémentaire :
Me.InvokeRequired
Me.Invoke
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

merci pour ta réponse mais je ne vois pas ou je doit mettre le
Me.InvokeRequired
Me.Invoke
car j'ai regarder un peut partout et tester plein de truc mais rien n'y fait
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
156
As-tu regardé l'aide des fonctions en question ?
As-tu recherché un peu ?

Ces fonctions vont te dire et te permettre d'executer u ne fonction dans le thread d'affichage et non dans le thread que tu as créé
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

je regarderai sa et je te tiens au courant merci
Messages postés
16040
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 juin 2021
551
Bonsoir, sujet déplacé dans la catégorie VB.Net
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

j'ai regarder t je n'ai toujours rien compris au thread
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
156
InvokeRequired te retourne un booléen indiquant si tu dois utiliser Invoke car tu pars d'un autre thread.

Invoke a besoin d'un Delegate (grosso modo l'équivalent un pointeur de fonction) pour lancer ta fonction.

En gros :
Me.Invoke(Sub() Ma_ fonction(ParametresEventuels) )
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

Merci pour tes réponses mais toujours pas compris car c'est sur le
for each lvi in lv1.items qu'il me mais l'erreur et non pas sur thread
mais ce n'ai pas grave je vais voir autrement.
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

C'est bon j'ai trouver comment résoudre le problème en mettant
CheckForIllegalCrossThreadCalls = False
merci de votre aide
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
156
Cela revient à soigner une fracture avec un pansement ...
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
156
En gros, voici un code exemple :

Soit un gestionnaire d'évènement Button1_Click(Sender, Arg)

Sub ...
If Me.InvokeRequired Then
me.Invoke(sub() Button1_Click(sender,Arg))
return
End If
...
End Sub


If a Dalek is a being of pure hate...what happens when Cadence uses her love spell on one?
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

Merci