Diskuze: WPF MainWindow a reakce na událost v jiné třídě
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= 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.
Ujisti se, jestli máš tu třídu a MainWindow ve stejném jmenném prostoru. Jinak můžeš předat té třídě v konstruktoru instanci MainWindow a pak danou metodu volat z konstruktoru tvé třídy. Další možnost je, udělat si tu metodu v MainWindow statickou.
Presne to co pises jsem zkousel, k metode se pomoci instance na MainWindow
dostanu a pokud to zkousim tak ze si vytvorim dve okna a z jednoho takto
spoustim metody druheho okna tak je vse ok. Ale muj problem je v tom ze
potrebuji metodu spoustet z metody vyvolane asynchronne po prichodu dat na
serial port. Tato data(string)chci vlozit treba do textBoxu. A v tom okamziku
vzdy skoncim s vyjimkou "Volající vlákno nemůže získat přístup k tomuto
objektu, protože jej vlastní jiné vlákno.". Tu vyjimku vyvola az pokus o
pristup k tomu textBoxu
Teprve teď mi došlo, že můj problém není v přístupu k metodě, ale v tom že se mi samozřejmě asynchronní událost zpracovavá v samostatném vlákně, takže teď můžu začít znovu hledat řešení skutečného problému...
Tak nakonec je to ještě trochu jinak. Můj problém byl v tom,že ve WPF jsou veškeré elementy dostupné jen vláknu, které je samo vytvořilo. A proto je potřeba zařídit, aby si potřebnou metodu zavolalo samo vlákno pomocí Dispatcher a Invoke viz http://programujte.com/…a-v-c-7-dil/ a http://stackoverflow.com/…-main-thread
Diky za pomoc
Zobrazeno 5 zpráv z 5.