Ještě bych si dovolil v této souvislosti jednu doplňující otázku: Jak jsem teď pochopil, vyřízení události běží tam, odkud je dán k této události pokyn. Je to celkem jasné a i pro mne, jako laika, dokonce pochopitelné u vlastních metod. Jak je to ale třeba u FORMu? Na formulář, případně do něj vnořené Controlls je navázána fůra událostí. Všechny jsou tedy navázány na jedno vlákno (jak jste psal o "jednovláknovém zázemí"). To je, si myslím, taky celkem pochopitelné. Můj dotaz míří ale tam, pokud si spustím WinForm aplikaci, je nějaký mechanismus, jak z kódu této aplikace spustit druhý formulář s vlastní "WinForm" funkčností tak, aby tento formulář využíval opět svého "jednovláknového zázemí, ale ve svém vlastním vlákně (rozdílném od vlákna "stvořitele")? Zkrátka aby si oba formuláře žily víceméně samostatně (což není problém zvládnout díky Vašim radám v některé z předchozích diskusí), ale, hlavně, aby si každý i své eventy obhospodařoval v tomto svém vlastním vlákně? De facto, aby se vytvořila funkčnost aplikace taková, jako kdybych vytvořil samostatně (WinForm) aplikaci B, zkompiloval ji do spustitelného souboru a tento pak v rámci aplikace A spustil (přes process.start) v pomocném vlákně. Nebo je takováto úvaha zcela zcestná a pokud chci mít aplikaci s několika moduly, u kterých potřebuji, aby se vzájemně neovlivňovaly ani při řešení jednotlivých eventů, musím tyto konflikty vyřešit sám tak, že při zachycení eventu jenom spustím (do jiného vlákna) další metodu, která provede vlastní ošetření události, ovšem i s tím, že budu muset důsledně řešit i problémy s cross-thread bezpečností?
|