|
Quando facciamo una domanda di modulo, a volte dobbiamo ottenere informazioni sul modulo corrente o chiamare i controlli di altri moduli. Qui introduco due metodi per raggiungere questo obiettivo.
Quando dobbiamo chiamare controlli da altri moduli in un modulo, possiamo usare controlli. CheckForIllegaCrossThreadCalls=false; Ad esempio: Button.CheckForIllegalCrossThreadCalls=false; Naturalmente, possiamo anche rendere l'intera forma incrociata Form.CheckForIllegalCrossThreadCalls=false; Questo ci permette di accedere ai controlli o alle proprietà di questa forma in altre forme. Questo potrebbe non essere il metodo più sicuro, e a volte il debug ci dà un errore.
Qui presenterò un altro metodo accessibile tra i thread. Invoke salta sul thread del modulo per eseguire la funzione sul delegato
Prima di tutto, dobbiamo dichiarare una commissione. delegato pubblico void DelSetTime(oggetto str); Poi dobbiamo solo preparare la funzione che deve essere eseguita, empty pubblico setTime(object str); Ora possiamo mettere il delegato sul thread del modulo per eseguire Delegato d=nuovo DelsetTime(setTime); Questo. Invoke(d,Datetime.Now.ToString()); In questo modo possiamo ottenere accesso cross-thread.
Ogni modulo ha un thread del modulo, che è principalmente responsabile del disegno del modulo e dei controlli del modulo Questo thread lo chiamiamo thread form o thread principale. Molte volte dobbiamo aggiungere thread al modulo per elaborare i dati, e poi possiamo impostare questi nuovi thread come thread di background quando il modulo è chiuso Anche il thread finirà. ThreadStart ths=nuovo ThreadStart(Demo); Thread th= nuovo Thread(ths); th. Start(); th. IsBackground=vero;
Originale: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|