|
Keď vytvárame formulárovú aplikáciu, niekedy potrebujeme získať informácie o aktuálnom formulári alebo zavolať ovládacie prvky iných formulárov. Tu predstavujem dva spôsoby, ako to dosiahnuť.
Keď potrebujeme volať ovládacie prvky z iných foriem vo formulári, môžeme použiť ovládacie prvky. CheckForIllegaCrossThreadCalls=false; Napríklad: Button.CheckForIllegalCrossThreadCalls=false; Samozrejme, môžeme tiež vytvoriť celý tvar prepojený Form.CheckForIllegalCrossThreadCalls=false; To nám umožňuje pristupovať k ovládacím prvkom alebo vlastnostiam tejto formy v iných formách. Toto nemusí byť najbezpečnejšia metóda a niekedy ladenie spôsobí chybu.
Tu predstavím ďalšiu metódu, ku ktorej sa dá pristupovať naprieč vláknami. Invoke skočí na vlákno formulára, aby vykonal funkciu na delegátovi
Najprv musíme vyhlásiť komisiu. public delegate void DelSetTime(object str); Potom už len potrebujeme pripraviť funkciu, ktorú treba vykonať, public void setTime(objekt str); Teraz môžeme delegáta umiestniť na vlákno tvaru na vykonanie Delegát d=nový DelsetTime(setTime); Presne tak. Invoke(d,Datetime.Now.ToString()); Týmto spôsobom môžeme dosiahnuť cross-threaded prístup.
Každý formulár má vlákno formulára, ktoré je hlavne zodpovedné za dokončenie kresby formulára a ovládanie formulára Toto vlákno nazývame vlákno formulára alebo hlavné vlákno. Mnohokrát potrebujeme pridať vlákna do formulára na spracovanie dát, a potom môžeme tieto novo vytvorené vlákna nastaviť ako pozadie, keď je formulár uzavretý Vlákno sa tiež skončí. ThreadStart ths=nový ThreadStart(Demo); Vlákno th= nové Vlákno(ths); th. Start(); th. IsBackground=true;
Originál: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|