Skip to main content

We use the $timeout setting in the ASN file of our application, but this does not have an impact if a user leaves an askmess/filebox/… statement unanswered. This can lead to long lasting 'open transactions' on the database, which in his turn does not help the overall performance.

We investigated the possibility of the UTIMER function, but since this does not capture 'inactivity', this is not an option: we do have large processes which needs time. And it seems that this UTIMER is even 'disabled' when an AskMess is used.

Regarding the open transactions, we tried to avoid these using commits/rollbacks (after retrieve instructions) but this doesn't really closes the transaction because Uniface needs to complete its hitlist. We can achieve this by performing a setocc -1 ; but that is (seeing the large amount of data) not an option either.

Anyone any idea/suggestion?

P.S.: we are running Uniface 10.4.2.043 with Ms Sql server as database (ODBC Driver 17)

Microsoft SQL Server 2014 - 12.0.2269.0 (X64) 
    Jun 10 2015 03:35:45 
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 17763: ) (Hypervisor)



------------------------------
Geert Dupont
Xperthis NV
Mechelen BE
------------------------------

We use the $timeout setting in the ASN file of our application, but this does not have an impact if a user leaves an askmess/filebox/… statement unanswered. This can lead to long lasting 'open transactions' on the database, which in his turn does not help the overall performance.

We investigated the possibility of the UTIMER function, but since this does not capture 'inactivity', this is not an option: we do have large processes which needs time. And it seems that this UTIMER is even 'disabled' when an AskMess is used.

Regarding the open transactions, we tried to avoid these using commits/rollbacks (after retrieve instructions) but this doesn't really closes the transaction because Uniface needs to complete its hitlist. We can achieve this by performing a setocc -1 ; but that is (seeing the large amount of data) not an option either.

Anyone any idea/suggestion?

P.S.: we are running Uniface 10.4.2.043 with Ms Sql server as database (ODBC Driver 17)

Microsoft SQL Server 2014 - 12.0.2269.0 (X64) 
    Jun 10 2015 03:35:45 
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 17763: ) (Hypervisor)



------------------------------
Geert Dupont
Xperthis NV
Mechelen BE
------------------------------

Hi Geert

UnifAce has no real "interruptions". A program can only be interrupted if no statments are currently being processed (plus a few more conditions, UnifAce just has to be "idle").
A "message/question" or "askmess" is just a statement, so no interrupt possible :-(
You could use a small C-routine to hook into the Windows loop of the window and wait there for your own timer interrupt. As soon as the timer expires, you act as if the cancel button is pressed.
Years ago I made something similar for the status bar, but the sources have long since disappeared  

Or ask Uniface to implement a real interrupt.
But this "timer" runs long, very long

Ingo



------------------------------
Ingo Stiller
Aareon Deutschland GmbH
------------------------------