Back to "Delegat.BörjaInvoke() och minne läcker..."

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

.NET C# Imported mostlylucidcouk

Delegat.BörjaInvoke() och minne läcker...

Friday, 20 February 2004

Jag blir alltmer involverad i världen av Asynkrony och har gjort lite grävande omkring i några av fallgroparna av multi-threading. Jag stötte på en intressant idag som handlar om användningen av BeginInvoke utan en motsvarande EndInvoke när du använder delegater ... många böcker (inklusive den jag använder mest just nu, den utmärkta Programmering .NET-komponenter av Juval Lowy) nämna att ett bra sätt att avfyra händelser asynkront (dvs inte blockera) är att enkelt ringa BeginInvoke på delegaten - cool verkar lätt nog! Tja, läsa runt lite, upptäckte jag Detta av Mike Woodring som innehåller följande uttalande: "Börja med 1.1 release av .NET Framework, SDK docs nu bära en försiktighet som mandat kalla EndInvoke på delegater du har kallat BeginInvoke på för att undvika potentiella läckor. Detta innebär att du inte kan helt enkelt "elda-och-glöma" ett samtal till BeginInvoke utan risken att köra risken för att orsaka problem. " Jag hittar inte biten i läkarna som säger det, men en annan artikel vid O'Reilly Ordförande Baserat på de här bevisen verkar det vara en bra idé att undvika den här potentiella läckan. Mikes grejer. har en handligt liten hjälpare klass som stöder Eld och glöm idiom - död lätt, nu kan jag ha härlig eld och glömma samtal utan att oroa sig för oavsiktliga läckor :-)

UPPDATERING: Hittade doc-referensen, om du har MSDN så är det här, om inte den on-line versionen är här

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.