|
Když vytváříme formulářovou aplikaci, někdy potřebujeme získat informace o aktuálním formuláři nebo zavolat ovládací prvky jiných formulářů. Zde představuji dvě metody, jak toho dosáhnout.
Když potřebujeme volat ovládací prvky z jiných forem ve formuláři, můžeme použít ovládací prvky. CheckForIllegaCrossThreadCalls=false; Například: Button.CheckForIllegalCrossThreadCalls=false; Samozřejmě můžeme také udělat celý formulář křížově propletený Form.CheckForIllegalCrossThreadCalls=false; To nám umožňuje přistupovat k ovládacím prvkům nebo vlastnostem této formy v jiných formách. To nemusí být nejbezpečnější metoda a někdy ladění způsobí chybu.
Zde představím další metodu, ke které lze přistupovat napříč vlákny. Volání skočí na vlákno formuláře, aby vykonalo funkci na delegátu
Nejprve musíme vyhlásit komisi. public delegate void DelSetTime(object str); Pak už jen musíme připravit funkci, kterou je třeba spustit, veřejná prázdnota setTime(objekt str); Nyní můžeme delegáta umístit na vlákno ve tvaru pro vykonání Delegát d=nový DelsetTime(setTime); Přesně tak. Invoke(d,Datetime.Now.ToString()); Tímto způsobem můžeme dosáhnout cross-threaded přístupu.
Každý formulář má vlákno formuláře, které je hlavně zodpovědné za dokončení vykreslení formuláře a ovládání formuláře Toto vlákno nazýváme vlákno formy, tedy hlavní vlákno. Často musíme do formuláře přidat vlákna, aby data zpracovala, a pak můžeme tato nově vytvořená vlákna nastavit jako pozadí, když je formulář uzavřen Vlákno také 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
|