Delegato.BeginInvoke() e perdita di memoriaM SK2
Mi sono sempre più coinvolto nel mondo dell'assincronia e ho fatto un po' di ricerca su alcuni dei guai del multireading. Oggi mi sono imbattuto in uno interessante che riguarda l'uso di BeginInvoke senza un EndInvocation corrispondente quando si usano delegati...manchi libri (incluendo quello che io use più di tutti adessoM SK3 l'excellente Programmazione .NET Components da Juval Lowy) menziona che un buon modo per attivare gli eventi asinchronamente (i.eM SK3 non bloccareMSC4 è semplicemente chiamare BeginInvoke su il delegato Beh, leggendo un po', ho scoperto Questo è di Mike Woodring. che contiene questa dichiarazione: "Iniziando con la 1.1 uscita del .Framework NET, i docs del SDK comportano ora una precauzione che mandata di chiamare EndInvoke ai delegati che voi avete chiamato BeginInvocatione in modo da evitare potenziali fuggimentiM SK5 Questo significa che non potete semplicemente ♫"fireMST7andMst8forgetM st9 chiamare BeginInvokes senza il rischio di portare a termine il rischio della causazione di problemiM ST10 SST11 Ora , Non riesco ' a trovare il bit nei documenti che dice ,, ma Un altro articolo. All'incirca. O'Reilly Menziona la stessa cosa... BehM SK1 sulla base di queste prove, sembra un'idea buona evitare questa potenziale perdita , per fortuna Le cose di Mike Ha una piccola classe di assistenti che supporta i bambini. 'Fire and Forget idiom' - facile da morire , ora posso avere un bel fuoco e dimenticare le telefonate senza preoccuparmi di sfuggimenti intenzionali.
UPDATE: C'è stato trovato il foglio di riferimento, se avete MSDN M SK2s Qui., se non la versione su linee - è Qui.