|
Ko ustvarjamo aplikacijo za obrazce, včasih potrebujemo informacije o trenutnem obrazcu ali pa pokličemo kontrole drugih obrazcev. Tukaj predstavljam dve metodi za dosego tega.
Ko moramo klicati kontrole iz drugih oblik v obliki, lahko uporabimo kontrole. CheckForIllegaCrossThreadCalls=false; Na primer: Button.CheckForIllegalCrossThreadCalls=false; Seveda lahko celotno obliko naredimo tudi navzkrižno navojno Form.CheckForIllegalCrossThreadCalls=false; To nam omogoča dostop do kontrol ali lastnosti te oblike v drugih oblikah. To morda ni najvarnejša metoda, včasih pa razhroščevanje povzroči napako.
Tukaj bom predstavil še eno metodo, do katere je mogoče dostopati med različnimi nitmi. Klic skoči na nit obrazca, da izvede funkcijo na delegatu
Najprej moramo razglasiti komisijo. public delegate void DelSetTime(object str); Nato moramo le še pripraviti funkcijo, ki jo je treba zagnati, public void setTime(object str); Zdaj lahko delegata postavimo na nit oblike za izvedbo Delegat d=novi DelsetTime(setTime); to. Invoke(d,Datetime.Now.ToString()); Na ta način lahko dosežemo cross-threaded dostop.
Vsak obrazec ima nit obrazca, ki je predvsem odgovorna za dokončanje risbe obrazca in za nadzor obrazca To nit imenujemo oblikovna nit ali glavna nit. Velikokrat moramo v obrazec dodati niti za obdelavo podatkov, nato pa lahko te novo ustvarjene niti nastavimo kot ozadne niti, ko je obrazec zaprt Tudi tema se bo končala. ThreadStart ths=novi ThreadStart(Demo); Nit th= nova nit(ths); th. Start(); th. IsBackground=res;
Izvirnik: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|