|
Kui teeme vormitaotluse, peame mõnikord saama infot praeguse vormi kohta või kutsuma teiste vormide juhtimisseadmeid. Siin tutvustan kahte meetodit selle saavutamiseks.
Kui peame kutsuma kontrolle teistest vormidest, saame kasutada kontrolle. CheckForIllegaCrossThreadCalls=false; Näiteks: Button.CheckForIllegalCrossThreadCalls=false; Muidugi saame kogu vormi ka ristlõimestada Form.CheckForIllegalCrossThreadCalls=false; See võimaldab meil pääseda ligi selle vormi kontrollidele või omadustele teistes vormides. See ei pruugi olla kõige turvalisem meetod ja mõnikord annab silumine vea.
Siin tutvustan teist meetodit, millele pääseb ligi üle lõimede. Invoke hüppab vormilõime, et täita funktsioon delegaadil
Esiteks peame kuulutama komisjoni. public delegate void DelSetTime(object str); Siis peame lihtsalt ette valmistama funktsiooni, mis tuleb täita, public void setTime(objekt str); Nüüd saame delegaadi panna vormi lõimele, et täita Delegaat d=uus DelsetTime(setTime); See. Invoke(d,Datetime.Now.ToString()); Nii saame saavutada ristlõimilise ligipääsu.
Igal vormil on vorminiit, mis vastutab peamiselt vormi joonistamise ja vormikontrollide lõpetamise eest Seda teemat nimetame vormilõimiks või põhilõimeks. Sageli peame vormile lisama lõime, et andmeid töödelda, ja siis saame need uued lõimed määrata taustalõimedeks, kui vorm on suletud Teema lõpeb samuti. ThreadStart ths=uus ThreadStart(demo); Niit th= uus niit(th); th. Start(); th. IsBackground=true;
Originaal: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|