NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Přístup ke kontrolkám z hlavního vlákna vytvořené v BackgroundWorkeru

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

Aktivity
Avatar
D0ll0k
Člen
Avatar
D0ll0k:11.7.2016 22:50

Ahojte. Mám takový problém s přístupem ke kontrolkám z hlavního vlákna vytvořené v BackgroundWorkeru.
Pomocí BackgroundWorkeru si načtu několik obrázků ze složky, vytvořím instance PictureBoxu a pak je přiřadím k pictureBox.Image. Když ale chci přidat pictureBox do formu, hodí mi to chybovou hlášku:

Additional information: Operace mezi vlákny není platná: Přístup k ovládacímu prvku  proběhl z jiného vlákna než z vlákna, v rámci kterého byl vytvořen.

Zkoušel jsem hledat na internetu řešení, ale bohužel jsem nic nenašel. Hádám, že to bude mít něco společného s Invoke() nebo BeginInvoke().

Odpovědět
11.7.2016 22:50
Veni, vidi, programmato
Avatar
hj.masek
Člen
Avatar
hj.masek:11.7.2016 23:20

Mozna?

TvojeControlka.Invoke(new Action(() => Label1.Text = "zmena"));
Editováno 11.7.2016 23:22
 
Nahoru Odpovědět
11.7.2016 23:20
Avatar
hj.masek
Člen
Avatar
Odpovídá na hj.masek
hj.masek:11.7.2016 23:26

Promin chyba, lel

Label1.Invoke(new Action(() => Label1.Text = "zmena"));
 
Nahoru Odpovědět
11.7.2016 23:26
Avatar
D0ll0k
Člen
Avatar
Odpovídá na hj.masek
D0ll0k:12.7.2016 9:50

Díky, ale nepoužívá se to při manipulaci když ti běží více vláken využívající tu stejnou kontrolku? Tohle jsem na mysli neměl. Vlastnosti kontrolky mi jdou v nastavovat v pohodě. Jediné co nejde je přidávání kontrolek vytvořené v jiném vlákně do formu hlavním vláknem.

Nahoru Odpovědět
12.7.2016 9:50
Veni, vidi, programmato
Avatar
Odpovídá na D0ll0k
sadlomaslox25:12.7.2016 12:17

no pokud vim tak kontrolky si thread-bound coz znamena ze kontrolka nalezi takovemu vlaknu, ktere zavolalo konstruktor kontrolky. kdyz mas form vytvoreny ve vlaknu 1 tak do toho nemuzes vrazit kontrolku vytvorenou na vlakne 2.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
12.7.2016 12:17
Avatar
D0ll0k
Člen
Avatar
Odpovídá na sadlomaslox25
D0ll0k:12.7.2016 13:11

Aha, tak to budu asi muset předělat kód :-S . Ale díky

Nahoru Odpovědět
12.7.2016 13:11
Veni, vidi, programmato
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.