Kirjautuminen

Haku

Tehtävät

Koodit: VB.NET: Säikeet

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

Kommentit

sami kauppinen [03.05.2004 08:37:41]

#

mul on vb6 saisko tost exen

esakom [06.02.2005 15:23:25]

#

oikein hyvä ja selkeä esimerkki. pisteet hyvästä kommentoinnista!

ErroR++ [18.04.2011 17:58:18]

#

tosiaan paljon kommentteja

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta