Kirjoittaja: tnb
Kirjoitettu: 03.03.2004 – 03.03.2004
Tagit: koodi näytille, vinkki
Säikeillä (threads) saadaan aikaan ohjelman jakautuminen rinnakkain suoritettaviin osiin, jotka jakavat prosessoritehon ja näyttävät tapahtuvan samanaikaisesti.
Oheinen esimerkki näyttää miten kahta aliohjelmaa ajetaan rinnan. Aliohjelmat pyörittävät laskuria, joka näytetään formilla. Taian omaisesti laskurit pyörivät samaa tahtia.
tee: form1, button1, textbox 1 ja 2
Imports System.Threading ' aivan tekstin alkuun
Form1:een tämä :
'luodaan kaksi säiettä
Dim Thread1 As System.Threading.Thread
Dim Thread2 As System.Threading.Thread
Dim a As Integer ' laskuri näyttöä varten
Dim b As Integer ' laskuri näyttöä varten
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Thread1 = New System.Threading.Thread(AddressOf ohjelma1)
Thread2 = New System.Threading.Thread(AddressOf ohjelma2)
a = 0 : b = 0 'laskurin nollaus
Thread1.Start() ' eka laskuri käyntiin
Thread2.Start() ' toka laskuri käyntiin
' laskurit ovat nyt käynnissä
' laskureiden arvot välittyvät a ja b muuttujissa
Do ' kunnes laskurit ovat 100
TextBox1.Text = a.ToString
TextBox2.Text = b.ToString
Application.DoEvents()
Loop Until a > 99 And b > 99
Thread1.Join() ' odotetaan säikeen 1 loppumista
Thread2.Join() ' odotetaan säikeen 2 loppumista
'päivitä vielä viimeinen kierros näyttöön
TextBox1.Text = a.ToString
TextBox2.Text = b.ToString
End Sub
Sub ohjelma1() ' ekan säikeen duuni
Dim i As Integer
For i = 1 To 100
' pidetään taukoa, jotta silmä ehtii
Thread1.Sleep(50)
b = i 'näyttöön lähetys
Next
End Sub
Sub ohjelma2() ' tokan säikeen duuni
Dim i As Integer
For i = 1 To 100
' pidetään taukoa, jotta silmä ehtii
Thread2.Sleep(50)
a = i 'näyttöön lähetys
Next
End Submul on vb6 saisko tost exen
oikein hyvä ja selkeä esimerkki. pisteet hyvästä kommentoinnista!
tosiaan paljon kommentteja