|
Kun teemme lomakehakemusta, joskus meidän täytyy saada tietoa nykyisestä lomakkeesta tai kutsua muiden lomakkeiden ohjausta. Tässä esittelen kaksi menetelmää tämän saavuttamiseksi.
Kun meidän täytyy kutsua kontrolleja muista muodoista jossain muodossa, voimme käyttää kontrollia. CheckForIllegaCrossThreadCalls=false; Esimerkiksi: Button.CheckForIllegalCrossThreadCalls=false; Tietenkin voimme myös tehdä koko muodon ristiinlangattuna Form.CheckForIllegalCrossThreadCalls=väärin; Tämä antaa meille mahdollisuuden käyttää tämän lomakkeen ohjaimia tai ominaisuuksia muissa muodoissa. Tämä ei välttämättä ole turvallisin tapa, ja joskus virheenkorjaus antaa meille virheen.
Tässä esittelen toisen menetelmän, johon pääsee käsiksi eri säikeiden välillä. Invoke hyppää lomakkeen säikeeseen suorittaakseen funktion delegaatilla
Ensin meidän täytyy julistaa komissio. julkinen edustaja mitätöi DelSetTime(objektin str); Sitten meidän tarvitsee vain valmistella funktio, joka täytyy suorittaa, public void setTime(objekti str); Nyt voimme laittaa edustajan lomakkeen säikeeseen suoritettavaksi Edustaja d=uusi DelsetTime(setTime); Tämä. Invoke(d,Datetime.Now.ToString()); Näin voimme saavuttaa ristiinkielisen pääsyn.
Jokaisessa lomakkeessa on muotolanka, joka vastaa pääasiassa lomakkeen piirroksen ja lomakkeen ohjausten viimeistelystä Tätä lankaa kutsumme muotosäieeksi tai pääsäieeksi. Monesti lomakkeeseen täytyy lisätä säikeitä datan käsittelyä varten, ja sitten voimme asettaa nämä uudet säikeet taustasäikeiksi, kun lomake suljetaan Ketju päättyy myös. ThreadStart ths=uusi ThreadStart(demo); Thread th= uusi Thread(ths); th. Start(); th. IsBackground=true;
Alkuperäinen: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|