If that’s true, on the second invocation, step through it.  It might be hung up 
in moveNext() not advancing to the next item, maybe because you’ve run out of 
items.


On 5/17/10 11:12 PM, "Richard Rodseth" <[email protected]> wrote:






I think I already mentioned it was called twice. I can double-check tomorrow.

On Mon, May 17, 2010 at 9:35 PM, Alex Harui <[email protected]> wrote:





Set a breakpoint on setSelectionDataLoop.  See how often it gets called.



On 5/17/10 4:49 PM, "Richard Rodseth" <[email protected] 
<http://[email protected]> > wrote:






Thanks for trying. No, the presentation model has an array collection whose 
.source gets changed after an HTTPService call returns (although I should 
mention that I am using my mock service layer at the moment). I added a a 
collection change listener to the collection reference.
I have set a breakpoint in setSelectionDataLoop(). I hit it twice (the 
parameters appear the same - index 0, items array containing the object to 
select, useFind=false). Then the debugger stopped with the finally{} block in 
Binding.watcherFired highlighted and the stack crawl below. Below this stack 
crawl I've included the last few lines of the one that shows up in the console.

Main Thread (Suspended: Error: Error #1502: A script has executed for longer 
than the default timeout period of 15 seconds.)
    mx.binding::Binding/watcherFired
    mx.binding::Watcher/notifyListeners
    mx.binding::PropertyWatcher/eventHandler
    flash.events::EventDispatcher/dispatchEventFunction [no source]
    flash.events::EventDispatcher/dispatchEvent [no source]
    
com.companyname.admin.deviceshome.ui.presentation::DevicesHome/changeSelectedGroupIds
    
com.companyname.admin.deviceshome.ui.presentation::DevicesHome/groupsChangedListener
    flash.events::EventDispatcher/dispatchEventFunction [no source]
    flash.events::EventDispatcher/dispatchEvent [no source]
    mx.collections::ListCollectionView/dispatchEvent
    
mx.collections::ListCollectionView/http://www.adobe.com/2006/flex/mx/internal::reset
    mx.collections::ListCollectionView/set list
    mx.collections::ArrayCollection/set source
    <anonymous>
    mx.rpc::Responder/result
    <anonymous>
    Array$/_forEach [no source]
    Array/http://adobe.com/AS3/2006/builtin::forEach [no source]
    <anonymous>
    flash.utils::Timer/_timerDispatch [no source]
    flash.utils::Timer/tick [no source]

Console:

Error: Error #1502: A script has executed for longer than the default timeout 
period of 15 seconds.
    at mx.controls.treeClasses::HierarchicalViewCursor/moveNext()
    at 
mx.controls.listClasses::ListBase/setSelectionDataLoop()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:6455]


On Mon, May 17, 2010 at 4:09 PM, Oleg Sivokon <[email protected] 
<http://[email protected]> > wrote:





I wish I could help more... well here's another guess:
- if you are using XML / XMLList, and have used insertBefore / isertAfter from 
the same XML / XMLList, then it is a known bug.
- if you dispatch "collectionChange" on your own you might have messed 
something in the event's properties, which then will make the collection run in 
a loop thinking it's being updated over and over again. It is slow, but it 
isn't that slow to run out of script timeout limit :)
Anyways, bindings are the first suspect in such case, but if that's not... ah, 
and, why won't you debug it? the debugger should be able to look into the 
framework sources. If, for whatever reason it doesn't, copy the Tree and other 
classes involved into your project and try debugging this way.

Best.

Oleg









--
Alex Harui
Flex SDK Team
Adobe System, Inc.
http://blogs.adobe.com/aharui

Reply via email to