Diskuze: Jak docílit okamžité změny textu Labelu.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Připadalo mi to nejbližší. Před 50-ti lety jsem udělal pár prográmků v klasickém Basicu (ještě na ZX Spektru) a od té doby jsem na počítač nesáhl. Mimo obsluhy nějakého CADovského programu v práci.
Změna se neprojeví, protože vlákno je "zaneprázdněno" zpracováním
těch příkazů. Mrkni se na komponentu BackgroundWorker, ta ti pomůže.
P.S.
VS 2010 je opravdu hooodně staré a spousta věcí se dnes dělá tak, jak to
VS2010 neumí, páč v té době to tak nefungovalo. Stáhni si VS2017
Community, ten je taky zdarma a "novoty" umí...
label1.refresh mi nefunguje.
Celý program jsem předělal, takže jsem label z tlačítka vypustil, ale
problém zůstává. Celý program obsahuje několik procedur tlačítek, jednu
proceduru mouse_klick a asi 15dalších procedur. Tlačítkem se program
spustí, něco udělá a p hlášce pracuj čeká na to co se udělá. zda se
zmáčkne nějaké tlačítko nebo klikne myší. Kliknutí spustí nějakou
proceduru a po doběhnutí této procedury je na jejím konci opět Label s
hláškou "pokračuj" aby obsluha věděla že má něco udělat. Ale tento
label se nezobrazí a počítač čeká na to co udělá obsluha - jestli
zmačkne tlačítko nebo klikne myší. Obsluha ale neví že má dělat. Jistě
to mohu obejít použitím msgBoxu nebo inputem ale chtěl jsem se vyhnout
rušení těchto zpráv.
Refresh by měl fungovat (Případně i Application.DoEvents(), ale to
používej opatrně!). Jak psal Michal Štěpánek, podívej se na i
BackgroundWorker.
Tvé vysvětlení je dost zamotané. Určitě by bylo lepší sem dát kód..
Ale musíš počítat s tím, že ve VB už moc lidí nedělá (většinou C#),
takže možná budeš muset čekat delší dobu na odpověď.
BackgroundWorker ti "přesune" ty akce do jiného vlákna, než ve kterém
běží hlavní okno aplikace a tím pádem bude aplikace umět reagovat na
vzniklé události.
Z tohoto videa https://channel9.msdn.com/…plikacich-CZ jsem pochopil
nasazení BackgroundWorkeru i já (a to je co říct).
Taky jsem začínal s VisualBasicem, páč mi přišel srozumitelnější do
začátku.
Postupně jsem ale zjišťoval, že VB.NET se věnuje málo lidí (oproti
C#.NET) a tak jsem postupně přešel k C#. Zpočátku jsem byl vyvalenej, ale
ten přechod není tak strašný, jak to na první pohled vypadalo. Obrovská
komunita vývojářů a velké množství materiálů a návodů v C# (oproti
VB), ti mohou výrazně usnadnit "vývoj"...
Díky, už to funguje . To video je opravdu dobré.
Ještě mě naučte jak mám dotaz uzavřít aby bylo vidět že je
vyřešen.
A proč by Vajkubal1234-le ve VB nezačal? Výstup v .NET po překladu je
snad něco méně hodnotnějšího než z C#? Vychází ten jazyk snad z jiné
vrstvy prostředí .NET? Prasit se snad dá v jakémkoliv jazyce...stejně tak
jako psát elegantně. Nebo ne?
Nesporně efektivnější je samozřejmě začínat v C#. Ale v prostředí .NET
je pro začátek a začátečníka VB třeba přístupnější (i když mě
osobně to připadá úplně jedno - ale nebudu proto dloubat do někoho - snad
jen do toho, kdo dloubá do druhých).
Po získání některých základních schopností, zkušeností a sebedůvěry,
po pochopení základních zákonitostí může Pavel Vorel vždycky začít
psát to samé v C# stejně tak dobře jako ve VB, anebo se na to prostě pak
vybodnout. To je na něm.
Prozatím je pro něj důležité aby pochopit základní teorie win
aplikace. Mezi stěžejní patří ta informace, že každá aplikace běží v
1 hlavním vlákně tzv. UI Threadu, které pokud se zablokuje jakoukoliv
časově náročnější činností, nedovoluje bez dalšího, zpracování
všech následujících příkazů (např. nejčastěji se projevující obnovu
stavu ovl. prvků formuláře - zjednodušeně řečeno).
Proto se využívají různé techniky (a je jich skutečně hodně), kdy se
časově náročná "práce" přesouvá třeba do vlastního vlákna (tzn. dojde
k paralerizaci úlohy) a v hlavním UI vlákně se čeká ve smyčce anebo
jiným způsobem (asynchroním voláním, TPL apod.) na její dokončení
jen.
Výhoda jednoho tohoto zpsůobu spočívá v tom, že hlavní UI vlákno má pak
spostu času na starání se o rozhraní pro uživatele (okno).
S tímto tématem se pak velice často skloňuje problematika "thread safe",
což není nic jiného než, že vše musí být synchronizováno a řízeno
tak, aby to do sebe zapadlo. Pro takové řízení pak slouží spousta
speciálních povelů (objektů a knihoven), které zjišťují stavy a
existence objektů ve vláknech, doběhnutí paralerních úloh apod.
Ale protože programujete, můžete i krásně fungovat v rámci jednoho UI vlákna, a tu náročnou úlohu třeba nějakým vhodným způsobem rozdělit a naporcovat na menší kousky... které budete zpracovávat v cyklu, který pak dovolí aplikaci se vracet na pozadí k i režijním činnostem... fantazii se meze nekladou.
Tvrdil jsem snad neco podobneho na co ptas? Ja se budu ptat na veci, ktere
zajimaji me, takze tvuj afektovany prispevek, ktery je tak dlouhy, ze se mi ani
nechce cist, ignoruji.
U příspěvků je pro autora vlákna viditelná taková "fajfka", na kterou když klikneš, označí se vlákno jako dokončené a odpověď bude označena jako řešení...
Zobrazeno 12 zpráv z 12.