All, I am looking for a 'best' practice in switching between versions of a library stack.
I have several versions of a 3rd party library stack, with file names called libraryv1.livecode, libraryv2.livecode, and libraryv3.livecode The stack name in the 3 files is always the same - say 'library' and as the 3rd party library references itself by name, I can't change the stack name - just the file name. So that means I need to open the library file for the version I want. 'start using' the library, perform a set of operations, 'stop using' the library and close the stack - REMOVING IT FROM MEMORY - so that when I open a different version, the stack name does not collide. The 'close stack' entry in the dictionary correctly notes that you must set destroyStack to true to have the stack removed form memory and that if the close stack is called from a handle in the stack being close, the stack will not be removed form memory until after the handler has finished executing. All well an good. The libraries are all external stacks.I have code in my main stack: command closeCurrentLibrary global gLibraryStack if gLibraryStackis not empty then -- stop using previous library stop using "library" wait 0 with messages -- allow system to send and process releaseStack message set the destroyStack of stack "library" to true close stack "library" -- allow system to close and remove form memory wait 0 with messages end if end closeCurrentLibrary command startLibraryv1 -- similar commands for libraryv2 and libraryv3 global gLibraryStack put AppPath()&"libraryv1.livecode" into gLibraryStack if there is a file gLibraryStack then open invisible stack gLibraryStack start using "library" else put empty into gLibraryStack end if end startLibraryv1 command useLibraryv1 -- similar commands for libraryv2 and libraryv3 send "closeCurrentLibrary" to this card in 1 millisec wait 5 millisec with messages send "startLibraryv1" to this card in 1 millisec wait 5 millisec with messages end useLibraryv1 So when I use this such as: useLibraryv1 <do some stuff> useLibraryv2 -- generates a message in the IDE "another stack with same name do you want to purge" message <do some other stuff> I get messages from LiveCode (in the IDE) that the previous library is still in memory when I switch libraries and do I want to purge it. What is the BEST way to close and remove a stack from memory and be sure it is really and truly removed? _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode