Ti posso aiutare ma solo a metà io uso VB.NET per cui mi riesce un pò lungo tradurre il tutto. Buttangio quattro righe di codice in VB.NET si protrebbe fare cosi:
La tua classe Miaclasse diventa:
codice:
Public Class Miaclasse
Private vettore As Double
Shared count As Integer
Shared id As Integer
Shared Event Done(ByVal valori As List(Of Double))
Shared Valori As New List(Of Double)()
Sub New(ByVal vettore As Double)
Me.vettore = vettore
id += 1
End Sub
Public Sub Miometodo()
Dim count As Integer
For n As Integer = 0 To Me.vettore
count += 1
Next
Valori.Add(count)
id -= 1
If id = 0 Then RaiseEvent Done(Valori)
End Sub
End Class
La tua Form diventa:
codice:
Public Class Form1
Dim task() As System.Threading.Thread
Dim WithEvents IstanzaMiaclasse As Miaclasse
Dim ValoriRisultato As New List(Of Double)()
Sub Test()
Dim vettori As New List(Of Double)()
vettori.Add(45)
vettori.Add(35)
vettori.Add(15)
vettori.Add(25)
vettori.Add(75)
ReDim task(vettori.Count - 1)
For i As Integer = 0 To vettori.Count - 1
IstanzaMiaclasse = New Miaclasse(vettori(i))
task(i) = New System.Threading.Thread(AddressOf IstanzaMiaclasse.Miometodo)
Next
For t As Integer = 0 To task.Count - 1
task(t).Start()
Next
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Test()
End Sub
Private Sub IstanzaMiaclasse_Done(ByVal valori As System.Collections.Generic.List(Of Double)) Handles IstanzaMiaclasse.Done
For Each valore As Double In valori
ValoriRisultato.Add(valore)
Next
End Sub
End Class
Non garantisco niente perchè scritto su due piedi, a me comunque funziona.
Se ti può aiutare bene altrimenti lascio a che svilupa in c#.
ciao