dotnetmxsvalue
The dotNetMXSValue value class holds another value. The dotNetMXSValue can be assigned to .net objects. A "proxy"DotNet
value is actually stored to theDotNet object, and that proxy points back to the dotNetMXSValue.
As long as the DotNet object holds the proxy value, the dotNetMXSValue and the value
it holds are protected from garbage collection.
Available in 3ds Max 9 and higher.
EXAMPLE
|
a = color 10 20 30 --MAXScript color value
b = dotNetMXSValue a --DotNet value holding the MAXScript value
tv = dotnetobject "treeview" --DotNet TreeView control
tv.tag = b --The tag is set to the color
tv.tag
a=b=undefined --Both a and b are set to undefined
gc() --and manual garbage collection is requested
--BUT the color value and dotNetMXSValue protected are from
--collection because the treeview instance holds
--the dotNetMXSValue proxy!
tv = undefined --assign undefined to the treeview variable
gc() --and request garbage collection again
--This time both the color value and the dotNetMXSValue are not
--protected from collection
|
Note that the above garbage collection may not delete the color value and the dotNetMXSValue
because the DotNet garbage collector has not deleted the treeview and freed its values
yet. One can force manual garbage collection of DotNet:
EXAMPLE
|
dgc = dotnetclass "system.gc"
dgc.collect()
gc() -- color value and dotNetMXSValue collected
|