MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Stumped on debugging what is causing Dynamic to re-evaluate.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg119690] Stumped on debugging what is causing Dynamic to re-evaluate.
  • From: W Craig Carter <ccarter at mit.edu>
  • Date: Fri, 17 Jun 2011 00:11:01 -0400 (EDT)

Hello Group,
I've been stumped on something for a few days.

The example is far too long to cut and paste---which is the preferred 
mode for asking questions in this group.  So, I am hoping only for 
advice on how to find what is causing unexpected re-firing of a Dynamic.

I have something of this form:
--------------
With[
{symbolsToBeUsedByKernel=constantThings},

DynamicModule[
{valuesSetByControlObjects,
a,
b,
c,...},
PopupMenu[Dynamic[a],"choice1","choice2"];
InputField[Dynamic[b]];

Dynamic@slowComputationGraphicsObject[symbolsToBeUsedByKernel,a,b]
]

]
----------------


In the actual example, I have many such Dynamic Control objects.

If I use a "dummy" =
slowComputationGraphicsObject[symbolsToBeUsedByKernel,a,b], there is no 
re-firing of Dynamic@slowComputationGraphicsObject.

If I use my "500-line---mutliple module---calls several packages---CPU 
intensive" ComputationGraphicsObject, an infinite loop of re-firing 
takes place (and the FrontEnd becomes unresponsive).

How does one start going about finding the cause of the re-firing????

I've buried all of the list-like controls in the 
With[{i=i},Table[InputField[var[[i]],{i,n}]] paradigm.
I've tried limiting the TrackedVariables.
I've tried Synchronous and ASynchronous updating.
None of these work.

I can solve the problem with a Button to fire the computation and taking 
away the Dynamic---but this isn't very satisfying.

Any general advice?

Thanks, Craig





  • Prev by Date: Re: Partition a list based on columns
  • Next by Date: Re: Problems with DSolve
  • Previous by thread: Re: A problem with Maximize/Minimize
  • Next by thread: Re: Stumped on debugging what is causing Dynamic to re-evaluate.