Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- hcl: GPT diszk kisebbre klónozása
- Elektromos rásegítésű kerékpárok
- ricsi99: 6. Genes alaplap tündöklése kontra MS/Zintel korlátozásai
- Brogyi: CTEK akkumulátor töltő és másolatai
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Parci: Milyen mosógépet vegyek?
- gban: Ingyen kellene, de tegnapra
Új hozzászólás Aktív témák
-
joysefke
veterán
válasz
ReSeTer
#9827
üzenetére
Bontsuk kétfelé a kérdést. Vagy amit megértettem belőle:
1,
Akarsz valami UI-t csinálni, ami user inputra reagál, csinál valamit és visszajelzést ad.
Nem tudod hogyan kéne a UI-t létrehozni, strukrurálni, úgy hogy aztán később "egy másik metódustból" hozzáférj adott UI elemekhez?
UI-hoz nem szólok hozzá.2,
Van egy fő végrehajtási szálad és nem tudod hogyan kéne egy "jól definiált feladatot" nem a fő szálon végrehatjani hanem onnan a háttérbe delegálni úgy hogy a háttérben az megtörténjen, mellékhatásokat tudjon létrehozni, pld üzenetet tudjon küldeni vagy mondjuk meglegyen a visszatérési értéke?A "jól definiált feladatodat" ki kell szervezned. Legegyszerűbben egy metódusba amire aztán hivatkozni tudsz.
void Something(p1, p2, ..) { .. }
aztán ezt ahelyett hogy a fő szálon meghívnád ezt a Something(..)-et, delegálod a végrehajtását a threadpoolnak. Ezt a Task.Run(..) nal teszed meg és paraméterként átadsz egy delegate-et amelyik hivatkozik a metódusodra.
Tehát a fő szálon ahonnnan delegálsz :
p1 = ...;
p2 = ...;
var t = Task.Run(() => Something(p1, p2, ..))
// fő szál nincsen blokkolva, a 't' visszatérési érték referencia a Task objektumra amibe a delegált feladatod csomagolva lett.Ebben a példában a "Something" egy visszatérési érték nélküli metódus, tehát mellékhatásokkal operál.
Ha azt szeretnéd, hogy egy másik kódrészlet értesítést kapjon a "Something"-ben történtekről, pld hogy az éppen hol tart, akkor ezt a Something-nek átadott paramétereken kerszül tudod legegyszerűbben megtenni. Paraméterként átadsz egy delegate-et amit a "Something" fel tud hívni mintegy üzenve a külvilágnak.
pld átadsz neki egy Progress<T>-t paraméterként ezen keresztül pedig a Something vissza tud jelezni a Progress<T> gazdájának. (A Progress<T> egy Action<T> delegatet csomagol be, UI kompatibilis módon.)
Something(p1, p2, .., IProgress<int> progress)
{
progress.Report(0);Thread.Sleep(1000) // CPU work
progress.Report(50);Thread.Sleep(1000) // CPU work
progress.Report(100);
}
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Melyik hordozható audiolejátszót (DAP, MP3, stb.) vegyem?
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Wise (ex-TransferWise)
- Ingatlanos topic!
- BestBuy topik
- Samsung kuponkunyeráló
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- Home server / házi szerver építése
- Android alkalmazások - szoftver kibeszélő topik
- További aktív témák...
- Nvidia GeForce RTX 3070 Founders Edition 8GB, Garanciával!
- Új, Gamer félgép - GIGABYTE B850 GAMING X WiFi + Ryzen 7 9800X3D + Corsair 2x16GB DDR5 6000MHz
- Újszerű MSI Thin 15 - 15.6"FHD 144Hz - i5 -13420H - 16GB - 512GB - Win11- RTX 3050 - 2+ év garancia
- Intel Core I9 14900KS - 24mag/32szál - Eladó!
- Apple TV 4K 2021 32 GB (A2169)
- Beszámítás! Motorola Sound Flow XT2549-1 hangszóró hibátlan működéssel
- 27% - Konfiguráció G5905 / RX580 / H510 / 16GB 2666Mhz / 1TB SSD / 500W
- Apple iPhone 16 Pro Max 256GB Black Titanium használt, szép állapot 96% akku (247 ciklus) 6 hó
- BESZÁMÍTÁS! ASRock B760 i5 14600KF 32GB DDR5 500GB SSD RX 9070 16GB be quiet! Pure Base 500DX 750W
- AKCIÓ! ASRock B450M R5 5500 16GB DDR4 512GB SSD RTX 2060 6GB Zalman T3 Plus ADATA 600W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
