System.Threading.Thread.Sleep   otázka

VB.NET

Ahoj

Není náhodou nějaká jiná metoda než tahle?

System.Threading.Thread.Sleep(random.Next(300, 10000))

Protože mám tohle

 Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        If cislo1 < cislo2 Then
            System.Threading.Thread.Sleep(random.Next(300, 10000))
            cislo1 = cislo + 1
        End If
    End Sub

No a když je ten timer spuštěný a dojede to k tomu sleepu, tak ten program zmrzne, nemohu pohybovat tabcontrolem prostě ničím, dokud se z toho sleepu neprobere.

Nevíte nějaký jiný způsob?

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

Pochopitelně. Uspáváte hlavní vlákno aplikace, které se stará o vykreslování uživatelského rozhraní a spravuje vstupy z klávesnice a myši. Nevím čeho chcete docílit, ale musí se to celé udělat jinak.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Aha.

Jedině co mě napadá je

Dim casovac as integer = 10

a do timeru vlozit

casovac = casovac - 1

if casovac = 0 then
blabla
end if

Asi tenhle je jediný, ovšem byl bych rád, kdyby to šlo jinak :)

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

Čeho chcete docílit? Pokud provést (provádět) něco v časovém intervalu, tak na to je System.Windows.Forms.Timer.

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

no...

Chci docílit toho, že se odečte číslo v náhodnou dobu.

Tak jsem chtěl použít tohle:

System.Threading.Thread.Sleep(random.Next(300, 10000))

Ale to mi bylo k prdu, protože zamrznul program.

Tak jsem to udělal následovně

Dim random As New Random()
Dim caspridatfinance As Integer = random.Next(5, 10) 'Náhodné rozmezí 5 - 10s
Dim casodebratfinance As Integer = random.Next(10, 20) 'Náhodné rozmezí 10 - 20s

Private Sub pridatfinance(castkaa As Integer) 'Přidá finance
        Finance = Finance + castkaa
        Label6.Text = Finance
    End Sub

Private Sub odebratfinance(castka As Integer) 'Odebere finance
        Finance = Finance - castka
        Label6.Text = Finance
    End Sub

Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        '****Přidat finance****
        caspridatfinance = caspridatfinance - 1 'Teď v proměné máme nastavené rozmezí 5 - 10s, takže to teď bude ubírat po sekundě
        If caspridatfinance = 0 Then 'Pokud bude to na nule
                pridatfinance(125) 'tak to přidá finance
            End If
            caspridatfinance= random.Next(5, 15) 'A znova se to nastaví na rozmezí 5 - 10s
        End If
        '****Odebrat finance****
        casodebratfinance = casodebratfinance - 1 'To je to stejné, ale odebere
        If casodebratfinance = 0 Then
           odebratfinance(50)
            End If
            casodebratfinance = random.Next(10, 20)
        End If
     End Sub

Je to pro jednu hru :) a předem říkám NE...nechci zatím XML :) aj.

Jde o náhodu, to jsem potřeboval a přišel jsem na to, ale pokud máte jiný způsob napiště, a uvidíme :)

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

K čemu by se na tohle využilo XML?! Náhodné doby lze docílit nastavením Timer.Interval na náhodně vytvořenou hodnotu v události Tick.

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

To tak mám :)

nahlásit spamnahlásit spam 0 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