Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mult thread.. sample and discussion please

110 views
Skip to first unread message

Phil McGuinness

unread,
Jan 31, 2022, 9:44:49 PM1/31/22
to
Have a VO GUI app runs lots of things via Dispatch.. but one of those things needs a good hour to run. I do not want wait in current processes for this.. and happy to have background event running. Realise on single thread cannot get this to work.. it wants that length job to finish before moving on.

So CreateVOThread and have a function with the work to be done. Thought start this and do other things and that thread will finish.. until needed again.

Can I do this with simple to CreateVOthread with the function and the main thread is processing again. I did not see this.. and confused.

Any help welcome

Jamal

unread,
Feb 1, 2022, 4:24:52 PM2/1/22
to
Never used VO Threads! Check out discussions at:
https://groups.google.com/g/comp.lang.clipper.visual-objects/search?q=CreateVOthread%20

You may something helpful.

Jamal

Wolfgang Riedmann

unread,
Feb 2, 2022, 1:24:23 AM2/2/22
to
Hi Phil,

as Jamal wrote: never use threads in VO.

You can use them in X#, but if you have longer operations it may be
better to move them to background Windows services on some dedicated
machine and run them when the VO application sets a flag in the
database or writes some flag file.

Wolfgang
--

Phil McGuinness

unread,
Feb 2, 2022, 4:15:46 AM2/2/22
to
Jamal, Wolfgang

Have it working ut in crashes it seems randomly.
I am not sure is DBServer thread safe.
I simply want a subset of data, open as DBSERVER and do some slow process to REST service.
The crash seems relate totally to a field in Dbserver.

With CreateVOThread is the a requirement to lock memory in a certain way.
Could not find many samples.

Did not want to write another whole service when my system is a Service.
Have not got that far... it crashes in the IDE.

Anybody elese experiences, pointers, gotta yas and frustrations.
Little clues help

Phil

dlzc

unread,
Feb 2, 2022, 9:22:19 AM2/2/22
to
Dear Phil McGuinness:

On Wednesday, February 2, 2022 at 2:15:46 AM UTC-7, Phil McGuinness wrote:
> Jamal, Wolfgang
>
> Have it working [but it] crashes it seems randomly. I am not sure is
> DBServer thread safe. I simply want a subset of data, open as
> DBSERVER and do some slow process to REST service.
> The crash seems relate totally to a field in Dbserver.

Imagine a "blind" "vanilla" VO application, that looks for an "instruction file" in its working directory, renames it to an "in process" name (assuming it gets to, file is not locked or still being written to), does what is in the instruction file, and then renames it to a "completed" name. It can be run at startup of the machine, as others have suggested.

VO is "free and easy" with stacks, and creating and freeing memory within its domain. So you are NOT going to have success, unless you change how you code to prevent it doing this, possibly even accessing data files will be impossible, as a "thread". Let it run as a standalone.

You can check status on assigned tasks, by checking the file names, and dates.

David A. Smith (not a VO programmer, but an earlier sister programmer)

Wolfgang Riedmann

unread,
Feb 6, 2022, 9:24:31 AM2/6/22
to
Hi Phil,

the VO development team has confirmed several times that the VO garbage
collector is not thread safe.

So, if you use threads, you cannot use dynamically allocated variables
like strings and objects.

The only possibility I see for you is to migrate to X#. Robert has done
miracles to make the runtime thread safe, and there every thread has
its own runtime state with its own settings.
So your main thread can have SetDeleted set to on, and one of your
spawned threads can have set it to off. Even the workarea numbers are
per thread.

I can confirm you that the DBServer class in X# is thread safe as I use
it in WPF applications, and they need to be multithreaded to have a
responsive GUI.

Wolfgang
--

Franz Rachbauer

unread,
Feb 7, 2022, 7:19:33 AM2/7/22
to
Why not do this thread in a sep app running on taskbar or in a service?
Regards, Franz
0 new messages