Pour exemple, prenons un objet simple et une classe qui permet d'en faire des listes. Dans cette classe j'ajoute un sub simple qui permet d'ajouter un objet à la liste à partir d'un string (j'ai simplifié la manip que je fais avec un simple tolower).
Je déclare une nouvelle variable au début de mon application :
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 Class MyCustomObject Public Prop1 As String Public Prop2 As String End Class Class MyCustomObjectList Inherits List(Of MyCustomObject) Public Sub AddFromString(ByVal StringToAdd As String) Dim Temp_Obj As New MyCustomObject Temp_Obj.Prop1 = StringToAdd Temp_Obj.Prop2 = StringToAdd.ToLower Me.Add(Temp_Obj) End Sub End Class
Aucun problème lorsque je fais des add(object) ou des AddFromString(string) depuis le thread principal, mais si je lance un thread secondaire AddFromString(string) ne fonctionne pas, j'ai l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim MyCustomList As New MyCustomObjectList
J'ai bien compris que le debugger me reproche de ne pas avoir instancié ma variable dans le thread ou je l'utilise. Pourtant les autres méthode (add, contains etc...) fonctionnent, et des variables comme string() déclarées dans le thread principal fonctionnent parfaitement dans le thread secondaire...La référence d'objet n'est pas définie à une instance d'un objet.
La question est donc, comment fait-on?
Partager