Hej! Har en fråga som kanske inte kan lösas. Min approach till programmering är att läsa kod och lära mig därifrån. Genom detta har jag nu lärt mig detta med threading att fungera ungefär så här Om du ger en variabel ett nytt värde/referens så kommer den automatiskt glömma bort det gamla och du kan inte nå det längre. Du kan göra en klass som du skapar en ny instans av varje gång och som du sätter alla värden i som du vill att tråden ska använda sig av och ha tillgång till. Att skicka ett värde med i tråden tror jag inte är möjligt. Jag har skickat med en sträng i trådens namn en gång och det fungerar fint, men det är lite av ett hack. läs den här killens text om threading - den är om csharp men det är den bästa text jag hittat om ämnet iaf Det är enkelt, din thread måste börja i en procedur med ett Object som argument, sen passar du bara ett object som argument när du startar tråden.Threading med argument i VB.net
private sub f()
...
...
end sub
dim fThread as new Threading.Thread(address of f)
fThread.start()
Mitt problem är nu att jag skulle vilja kunna göra följande
private sub f(byval i as integer)
...
...
end sub
dim k as integer
dim fThread as Threading Thread
for k = 0 to 10
fThread = new Threading.Thread(address of f(k))
fThread.start()
next k
Vad jag behöver är alltså en möjlighet att starta separate trådar med olika värden, utan att behöva använda globala variabler.
Är detta nåt som går att göra i VB.net eller är det bara att ge upp och fixa fram en lösning med globala variabler?
Tacksam för svar.
/JanneSv: Threading med argument i VB.net
Det gör du när du ger fThread = new Thread.
Garbage Collectorn kommer göra sig av med det objektet så snabbt som möjligt eftersom det inte längre har någon referens.Sv: Threading med argument i VB.net
Sv:Threading med argument i VB.net
http://www.yoda.arachsys.com/csharp/threads/
Sv: Threading med argument i VB.net
Public Class Form1
Dim Thread As New Threading.Thread(AddressOf Start)
Private Sub ThreadStart(ByVal Argument As Object)
Debug.Print(Argument)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Thread.Start("Test?")
End Sub
End Class