Rozdělení programu do vláken 2   zodpovězená otázka

Threading, .NET

Nějak mi to nedalo spát a rád by jsem se o tom jak to funguje dozvěděl více(mám mamysli práci s vlákny). Jestli můžete připojit nějaké stručné a jasné vysvětlení této techniky(třeba i kusy zdrojáku), např. volat podprogram v jiném vlákně, ukončení tohoto vlákna při nějaké události atd.

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jen velmi stručně a úplně základní použití, vydalo by to opět na celý článek, který také někdy v budoucnu hodlám napsat.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'stáhnout soubor v jiném vlákně
        System.Threading.ThreadPool.QueueUserWorkItem(AddressOf OperaceVJinemVlakne, "http://www.google.cz")
    End Sub

    Public Sub OperaceVJinemVlakne(ByVal adresa As Object)
        'operace, která probíhá v jiném vlákně
        Dim soubor As String = "c:\index.txt"
        My.Computer.Network.DownloadFile(adresa.ToString(), soubor, "", "", False, 5000, True)
        'otevřít stažený soubor v notepadu
        System.Diagnostics.Process.Start(soubor)
    End Sub

Tento příklad stáhne úvodní stránku serveru Google.com do textového souboru a zobrazí ji v poznámkovém bloku. Stažení chvíli trvá, ale pokud máte rychlejší linku, asi to nezaznamenáte.

Základní princip spočívá v tom, že zavoláte System.Threading.ThreadPool.QueueUserWorkItem a předáte jí adresu procedury (přes klíčové slovo AddressOf) a pokud chcete, tak i parametr (jakéhokoliv typu).

Tento příklad je opravdu velmi jednoduchý, nemáte možnost kontrolovat, zda-li už akce skončila, z jiného vlákna také nelze přistupovat na prvky formuláře, muselo by se to dělat přes Invoke atd.

V dohledné době se dočkáte článku, jakmile na to budu mít čas.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback