Multithreading envoi données aux thread
bonjour,
j'ai fait le code suivant (un peu simplifié):
Code:
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
|
Sub Main()
Dim cc As New CompressClass
For index1 As Integer = 0 To 9
For index As Integer = 0 To 9
Dim pathtemp As String = "img" & index1 & index
pathimg.Add(pathtemp)
Dim data As ThreadDataCompress
data = New ThreadDataCompress(pathimg)
ThreadPool.QueueUserWorkItem(AddressOf cc.compress,
data)
end sub
Public Class ThreadDataCompress
Public _sourceDir As List(Of String)
Sub New(ByVal sd As List(Of String)
_sourceDir = sd
End Sub
End Class
Public Class CompressClass
Public Shared nbrethread As Integer
Sub compress(ByVal ob As Object)
Interlocked.Increment(nbrethread)
Dim ddata As ThreadDataCompress = DirectCast(ob, ThreadDataCompress)
For Each dir As String In ddata._sourceDir
Console.WriteLine(dir)
Next
End Sub
End Class |
le problème et que l'enumeration de ma list ddata._sourceDir plante car ma variable est changé en cours de lecture.
j'en déduis qu'un de mes thread écrit sur mes vaariables alors que j'intencie ThreadDataCompress avant chaque appelle d'un thread ils devraient travailler idépendament sur des instances différentes?
s'il vous plait aidez-moi!!