Avatar
mivoko
Člen
Avatar
mivoko:

Ahoj,
potreboval bych poradit na prvni pohled s naprosto jednoduchou veci, ale uz se s tim trapim strasne dlouho a porad se mi nedari.
Muj problem je v tom jak spustit funkci ve tride MainWindow z jine tridy? To je vse :[
Uz jsem zkousel vsechno mozne a vzdy skoncim na chybe ze k metode nelze pristupovat protoze jej vlastni jine vlakno ;(

 
Odpovědět 3.8.2012 17:52
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na mivoko
Drahomír Hanák:

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.

 
Nahoru Odpovědět 4.8.2012 20:10
Avatar
mivoko
Člen
Avatar
Odpovídá na Drahomír Hanák
mivoko:

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 :(

 
Nahoru Odpovědět 6.8.2012 10:29
Avatar
mivoko
Člen
Avatar
Odpovídá na mivoko
mivoko:

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...

 
Nahoru Odpovědět 6.8.2012 11:01
Avatar
mivoko
Člen
Avatar
Odpovídá na mivoko
mivoko:

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 :)

 
Nahoru Odpovědět 6.8.2012 13:40
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 5 zpráv z 5.