|
Wanneer we een formulieraanvraag indienen, moeten we soms informatie krijgen over het huidige formulier of de controles van andere formulieren aanroepen. Hier introduceer ik twee methoden om dit te bereiken.
Wanneer we controles van andere vormen in een vorm moeten oproepen, kunnen we controles gebruiken. CheckForIllegaCrossThreadCalls=false; Bijvoorbeeld: Button.CheckForIllegalCrossThreadCalls=false; Natuurlijk kunnen we de hele vorm ook cross-threaded maken Form.CheckForIllegalCrossThreadCalls=false; Dit stelt ons in staat om de besturingselementen of eigenschappen van deze vorm in andere vormen te benaderen. Dit is misschien niet de veiligste methode, en soms geeft debuggen een foutmelding.
Hier zal ik een andere methode introduceren die toegankelijk is over threads heen. Invoke springt naar de formthread om de functie op de delegate uit te voeren
Eerst moeten we een commissie uitroepen. publieke delegate ongeldig DelSetTime(object str); Dan hoeven we alleen nog de functie voor te bereiden die uitgevoerd moet worden, publieke leegte setTijd (object str); Nu kunnen we de delegate op de thread van het formulier zetten om uit te voeren Delegate d=nieuwe DelsetTime(setTime); dit. Invoke(d,Datetime.Now.ToString()); Op deze manier kunnen we cross-threaded toegang bereiken.
Elke vorm heeft een vormdraad, die voornamelijk verantwoordelijk is voor het voltooien van het tekenen van de vorm en de bekistingsbediening Deze draad noemen we de vormdraad of de hoofddraad. Vaak moeten we threads aan het formulier toevoegen om de data te verwerken, en dan kunnen we deze nieuw aangemaakte threads als achtergrondthreads instellen wanneer het formulier wordt gesloten De draad zal ook eindigen. ThreadStart ths=nieuwe ThreadStart(Demo); Thread th= nieuwe Thread(s); D. Start(); D. IsAchtergrond=waar;
Origineel: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|