c # viivitusfunktsioon, mitte ainult unefunktsioon

C Delay Function Not Just Sleep Function



Kui akenprogrammis C # kutsutakse põhilõngasse puhkerežiimi, eeldab liides enne une lõpetamist animatsiooni peatatud olekut ja ei saa reageerida ühelegi toimingule!
rakendab viivitusfunktsiooni, mis pole ainuõigus. Kui viivitus on aegunud, saab liides ikkagi sõnumitele vastata:

public static void Delay(int milliSecond) { int start = Environment.TickCount while (Math.Abs(Environment.TickCount - start)

Math.Abs ​​() kohta:



Environment.TickCount, sisemine API on rakendatud rakendusega DWORD GetTickCount (), selle atribuudi väärtus tuletatakse süsteemi taimerist ja salvestatakse 32-bitise allkirjastatud täisarvuna. Seega, kui süsteem töötab pidevalt, suureneb TickCount nullist Int32-ni. MaxValue umbes 24,9 päeva pärast, seejärel hüpake Int32-le. MinValue (mis on negatiivne arv) ja seejärel suurendage järgmise 24,9 päeva jooksul nulli. DWORD on allkirjastamata ja atribuudi Environment.TickCount tagastatud väärtus on allkirjastatud, nii et pooled väärtustest on esitatud negatiivsete numbritega!



muu:
1. Kasutage une () abil lõime magamiseks.
Sisestage System.Threading.Thread.Sleep (1000) otse sinna, kuhu peate viivitama.
See meetod on kõige mugavam, kuid viivitamisprotsessi ajal muud vastused peatatakse. Kui seda kasutatakse peaniidis, põhjustab see programmi surma. Asünkroonse töö korral peatatakse see ka. Näiteks kasutades veebilehe laadimiseks veebibrauserit, sooviksin mõnda aega oodata, kuni see veebileht laaditakse, kuid unerežiimi kasutamine peatab ka veebilehe laadimisprotsessi.



Kasutada saab nii lõime- kui ka taimeri juhtnuppe. Kui kasutatakse funktsiooni Timer_Tick (...), on selle kasutamine ebamugav, kuna see ei saa Timer_Tick (...) helistada muudes funktsioonides. Tegelikult kasutavad mõlemad need lõime. Microsoft soovitab kasutada vahendustasu.
on rakendatud lõimudega C #:
süsteemi abil.Threading // nimeruumide tutvustamine
1. Viivituse 10 ms kood on:
Lõng.Unne (10)
2. Viivituse 1s kood on:
Niit. Magama (1000)

Tavaliselt, kui teeme winformi arendust, peame mõnikord laskma programmil paar sekundit magada, kuid kui kasutame funktsiooni thread.sleep () otse, lõpetab leht ui reageerimise. Selle lahendamiseks võite panna ui kuvamisel osaleva koodi üheahelalisse töötlemisse, võite kasutada ka järgmist lähenemisviisi, lisage väike funktsioon ok.

/// /// delay function /// /// How many seconds do you need to delay? /// public static bool Delay(int delayTime) { DateTime now = DateTime.Now int s do { TimeSpan spand = DateTime.Now - now s = spand.Seconds Application.DoEvents() } while (s