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 Sub
mul on vb6 saisko tost exen
oikein hyvä ja selkeä esimerkki. pisteet hyvästä kommentoinnista!
tosiaan paljon kommentteja