Non conosco il C# però a "grandi linee..." riesco a capirne il "perchè", ho provato a fare la stessa cosa in VB e non so perchè il thread accetta un solo parametro, cioè...
così funziona:
Private Sub funzione(ByVal a As String)
Console.WriteLine(a)
End Sub
Private Sub Button1_Click() Handles Button1.Click
Dim proc As New Thread(AddressOf funzione)
proc.Start("ciao")
End Sub
così NON funziona:
Private Sub funzione(ByVal a As String, ByVal b As String)
Console.WriteLine(a & b)
End Sub
Private Sub Button1_Click() Handles Button1.Click
Dim proc As New Thread(AddressOf funzione)
proc.Start("ciao", "riciao")
End Sub
e ritorna un errore "risoluzione dell' overload ecc...".
L' unico modo, che mi è venuto in mente, per aggirare il problema e quello di usare una classe:
Imports System.Threading
Public Class Form1
Private Sub Button1_Click() Handles Button1.Click
Dim my_function1 As New my_function
my_function1.param1 = "qui "
my_function1.param2 = "quo "
my_function1.param3 = "qua"
Dim proc As New Thread(AddressOf my_function1.start)
proc.Start()
End Sub
Public Class my_function
Public param1 As String
Public param2 As String
Public param3 As String
Public Sub start()
funzione(param1, param2, param3)
End Sub
Private Sub funzione(ByVal a As String, ByVal b As String, ByVal c As String)
Console.WriteLine(a & b & c)
End Sub
End Class
End Class
ciao