How long does the context of a delegate exist?

frame frame86 at live.com
Thu May 27 20:44:21 UTC 2021


On Thursday, 27 May 2021 at 18:13:17 UTC, Adam D. Ruppe wrote:
> On Thursday, 27 May 2021 at 12:59:02 UTC, frame wrote:
>> But what about the data used in the context of the delegate?
>
> If the delegate is created by the GC and stored it will still 
> be managed by the GC, along with its captured vars.
>
> As long as the GC can see the delegate in your example you 
> should be OK. But if it is held on to by a C or OS lib, the GC 
> might not see it and you'd have to addRoot or something to 
> ensure it stays in.

Did you mean to add the delegate as GC root or the data? It would 
be nicer to just add the delegate but addRoot does not accept it 
and casting to void* is deprecated. Does it work if I supply the 
.ptr property instead? This "GC silently no-op on wrong data" is 
annoying.


More information about the Digitalmars-d-learn mailing list