Subject Re: Error Code 239 IDAPI error
From Edward Racht <eracht@yahoo.com>
Date Sat, 21 Oct 2023 13:53:21 -0400
Newsgroups dbase.getting-started

On 10/20/2023 8:37 AM, MichaelItaliano wrote:
> I do run timers in the second app that checks if new records a re
> written and then writes them to a server somewhere.

There are some threads in programming concerning something similar to
your issue - you may be interested in.

ed
--------------------------
Re: timer class
From        Andy Taylor <andy.taylor.1959@outlook.com>
Date        Sat, 05 Dec 2020 04:50:37 -0500
Newsgroups        dbase.programming

Hi Gaetano,


> > MethodTwo
> Yes, I have implemented that. It seems to work but I need to launch
> another run in the morning to check if that affects another session
of dBase.

As I understand it each instance of dBASE should be fully encapsulated
and effectively ignored by the others.

>> Finally, if you make the timer an object of the form AND you refer
back to the form as the timer's parent make sure you remove the
>> parent reference from the timer before you close the form; otherwise
dBASE wont release the form from memory properly.  You don't
>> need to do this but I usually do as it allows me to traverse all
form objects easily using the inspector.
>>
> good tip, thanks! I have disabled the timer, but how do I remove the
parent link?
> this.timer.parent = null in the onClose event handler?

Yes, that removes the reference from the timer object but I would also
do this.timer = null form the form because I'm anal about it.

> by the way, you mentioned canClose, why not onClose?
Just because onClose happens after the close event and normally I don't
want an active timer if the form has closed in case
the timer fires when I don't want it to - say when the form is still
closing.  In this case however, the onTimer event actually
closes the form so the point is probably moot.

I would change your code slightly to read as follows:

function form_canClose()
    this.timer.enabled = false
    this.timer.parent = null
    this.timer = null  // at this point the timer should release from
memory automatically as nothing is holding it in place
    return

function form_onOpen()
    this.timer = new Timer( ) // Make timer a property of the form
    this.timer.parent = this // Assign form as timer's parent
    this.timer.onTimer = {;this.parent.close()}
    this.timer.interval = 13 // Fire timer every 13 seconds
    this.timer.enabled = true // Activate timer
    return