Utilities.Timer() using a Windows Timer object, which puts the thread from which it is called to ‘sleep’ for the specified time. Formativ runs in the same thread as the GroupWise client, so using a timer will also put GroupWise to sleep. (The GroupWise Query runs in it’s own thread). I suspect the errors you are seeing are a result of a threading/timing issue resulting from putting the main GroupWise thread to sleep while the query thread is running.
One solution (in theory) would be to run the query in a different thread and wait for it to return. You can’t do this in Formativ, but you could do it with a 4GL like VB, Delphi, C++, etc. However, Novell’s Object API documumentation indicates that free-threading (the ability to use any object created on any thread from any other thread) is not recommended. Our experience is that it should not be attempted at all. This means you can’t use a multi-threaded approach to solving this type of problem.
Unfortunately the only approach I can think of would be to not use a timer, and simply sit in a loop calling Utilities.DoEvents() to ensure the Windows message queue is processed while the query is being executed.
You may be able to obtain more information about using the Object API Find() and Query() objects from Novell, either directly or via the Developer forums they host.