2010-05-05 7 views

risposta

17

Thread.Start avvia un nuovo thread del sistema operativo per eseguire il delegato. Quando il delegato ritorna, il thread viene distrutto. Si tratta di un'operazione piuttosto pesante (avvio e distruzione di un thread), quindi in genere lo si fa solo se il metodo sarà di lunga durata.

Delegate.BeginInvoke chiamerà il delegato su un thread di thread. Una volta restituito il metodo, il thread viene restituito al pool per essere riutilizzato da un'altra attività. Il vantaggio di questo è che l'accodamento di un metodo al pool di thread è relativamente leggero perché non è necessario eseguire un nuovo thread ogni volta.

Control.BeginInvoke invoca il metodo sul thread per il controllo. I componenti dell'interfaccia utente sono intrinsecamente a thread singolo e ogni interazione con un controllo dell'interfaccia utente deve essere eseguita sul thread che lo ha creato. Control.BeginInvoke è un modo pratico per farlo.