Probleme explorer de fichier en vb

Résolu
papayou12
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014
- 30 mai 2014 à 09:52
papayou12
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014
- 3 juin 2014 à 11:12
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

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

30 mai 2014 à 12:51
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éé.
0
NHenry
Messages postés
14944
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
161
30 mai 2014 à 19:53
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
0
papayou12
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

Modifié par papayou12 le 30/05/2014 à 20:20
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
0
NHenry
Messages postés
14944
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
161
30 mai 2014 à 20:32
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éé
0
papayou12
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

30 mai 2014 à 20:51
je regarderai sa et je te tiens au courant merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril
Messages postés
17493
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
601
30 mai 2014 à 20:28
Bonsoir, sujet déplacé dans la catégorie VB.Net
0
papayou12
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

31 mai 2014 à 11:39
j'ai regarder t je n'ai toujours rien compris au thread
0
NHenry
Messages postés
14944
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
161
31 mai 2014 à 19:46
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) )
0
papayou12
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

2 juin 2014 à 09:13
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.
0
papayou12
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

2 juin 2014 à 10:35
C'est bon j'ai trouver comment résoudre le problème en mettant
CheckForIllegalCrossThreadCalls = False
merci de votre aide
0
NHenry
Messages postés
14944
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
161
2 juin 2014 à 19:47
Cela revient à soigner une fracture avec un pansement ...
0
NHenry
Messages postés
14944
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
161
Modifié par NHenry le 2/06/2014 à 20:36
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"
0
papayou12
Messages postés
48
Date d'inscription
mercredi 4 septembre 2013
Statut
Membre
Dernière intervention
12 juin 2014

3 juin 2014 à 11:12
Merci
0