Diskuze: Pomalá inicializace komponent
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 30 zpráv z 30.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Popiš přesněji program co má dělat. Kolik tam máš komponent ? Je potřeba je mít všechny inicializované hned ze začátku ? nešlo yb to rozdělit na více formů ? Proč tolik PictureBoxů ?


Představ si například mapu (form s pozadím mapy). A na mapě jsou pictureBoxy, které symbolizují body. Po kliknutí na daný bod (pB) se otevře nové okno (form) s informacemi o daném bodě. A jelikož jde ze startu vidět celá mapa, je potřeba, aby všechny pB byly inicializované současně hned ze startu.
Rozdělit to načítání dobrázků do více vláken-> 3 vlákna -> Main, BackgroundWorker1 a BackgroundWorker2. Každému BackgroundWorkeru dáš načíst 5 PB. (a bud se nactou soucasne, na to pouzijes RunWorkCOmplete Event, nebo se nactou tak jak je vlakna spracuji)
Pár odkazů - na netu je toho spousta, stačí googlit:)
http://www.dotnetperls.com/backgroundworker
http://www.codeproject.com/Articles/99143/BackgroundWorker-Class-Sample-for-Beginners
http://www.codeproject.com/Tips/83317/BackgroundWorker-and-ProgressBar-demo
http://www.dotneat.net/2009/02/10/BackgroundworkerExample.aspx


Je nějaký zásadní rozdíl mezi BackgroundWorkerem a Threadem? Myslím z hlediska vytížení procesoru. A jak mám přidělit BGW1 5 pBoxu, když ty se načítají z metody InitializeComponent(). Děkuji.
BackgroundWorker má nižší prioritu (4) než normální thread (9), a normálně si ty pb odeber z designeru a přidej si je tam pomocí kódu
Neměl bys tu mapu i s body spíše kreslit na 1 picturebox přes Graphics? Pokud tam máš desítky PB, tak se nediv, že to je pomalé.


Zkusiljsem hlavní program běžet na MainThreadu a
inicializaci jsem provedl v bgWorker1. Je to sice o něco
rychlejší, ale stále je to pomalé
Tak jsem zkusil inicializaci provést v NewThreadu...
Rychlost načítání je stejná a vytížení CPU je nižší. Jak je to
možné?
Myslím si, že najlepšie bude to vyriešiť tak ako píše sdraco cez graphics.
Jestli je to i přes BGW pomalé, tak rychlejší způsob nenajdeš.
Inicializace pictureboxu je hold nákladná narežii
jen mě napadá, to dělat
paralelně tu inicializaci.
Jestli je to i přes BGW pomalé, tak rychlejší způsob nenajdeš.
Inicializace pictureboxu je hold nákladná narežii
jen mě napadá, to dělat
paralelně tu inicializaci.
Jak říká sdraco, udělej to přes Graphics.
Asi to nebude ideální řešení, ale metodu InicializeComponent() si můžeš rozdělit na:
private void InicializeComponent()
{
//tady budes mit 5 pictureBocu
}
private void InicializeComponent1()
{
//tady budes mit dalsich 5 pictureBocu
}
kazdou inicializaci spustíš v jinem BGV. Myslim, ze to tak pude, ale vhodné řešení to asi není.

Přes Graphic to asi nepůjde... Ty body nejsou jen tečky, ale jsou to obrázky typu PNG... Například, kdyby byla mapa Evropy, tak na pozici Paříže by byl pictureBox Eiffelovy věže atd. Napadlo mě, že bych místo pBoxů použil labely, ale nevím, jestli je rozdíl mezi inicializací pBoxů a labelů...
Ještě by nebylo špatné zvážit využítí WPF, protože tam je vykreslování 5x-10x rychlejší.
Je to skoro úplně to samé a jsou tam třeba nové vychytané komponenty.


A kdy tedy používat WF a kdy WPF? Je na to nějaké pravidlo?
Nejčastěji by se dalo říči toto: Když chceš vykreslovat (rychle) použij WPF, jinak stačí WP.
Ještě znám jedno pravidlo: Pokud je něco pomalé, odeber zbytečné komponenty.
Když umíš WPF, používej WPF. Pokud umíš WF, používej WF. Potom u větších aplikaci se doporučuje WPF, protože jsou výkonnější.
Zobrazeno 30 zpráv z 30.