How to 'survive' to logout + login Windows sequence? (1 Viewer)

amorosik

Member
Local time
Today, 14:04
Joined
Apr 18, 2020
Messages
390
Workstations in LAN that use procedure created with Microsoft Access, Win 10 pro
When not in use, every workstation disconnect the local user from the desktop
Suppose the Access program is open, the workstation is unattended, after X minutes the Windows user is logged out
The user returns, ctrl-alt-del on the keyboard, enters the user name and password, and when he returns to his desktop he finds the Access procedure completely broken
Data connection lost (db server on another machine on the LAN) and the need to shut down program and return
The question is: how to allow the Access procedure to survive the Windows logout-login sequence?
 

The_Doc_Man

Immoderate Moderator
Staff member
Local time
Today, 07:04
Joined
Feb 28, 2001
Messages
27,186
This sounds like your IT support staff has imposed a local domain policy on idle terminals to force a Logout rather than a Sleep. In a fight between Access and Windows, Windows always wins. When the domain policy says Logout, then your two choices are to (a) help the app to gracefully shut down or (b) talk to your IT staff about whether they would consider a Sleep rather than a Logout. NOTE: Depending on whether there is any sensitive data available through your network, the odds of (b) diminish quickly, since it implies that something could still be active.

I used to work with the U.S. Navy. The Navy Enterprise Data Center - New Orleans had one of those "Logout after X idle" policies. What happens when those policies kick in is that Windows visits every task associated with your session. The task gets told by Windows to shut down. The task then has a chance to execute what is called a "Rundown" in which it is allowed to close everything. My comments below about "hardening" your app, if you implemented such a thing, would occur during the Access Rundown phase.

Some tasks, however, do not intercept that shutdown and thus leave themselves running. In a second look, if the task doesn't shut down, Windows forces a Process Exit, which can leave things dangling. Even if your system isn't set up for a Windows Pro-level operation, you can see the same sort of thing using "Win Start >> Power >> Restart" and watch active tasks start dumping themselves right and left. If you are on Win Home, some task "hangs", and you have to use the CTRL/ALT/DEL method (3-finger salute), you get a Logout option. At the end of that per-process loop, all of your tasks are removed from memory in a way that cannot be reclaimed. That happens to me on some older games every now and then.

What you can do to "harden" your app and prevent the app from becoming completely broken is to have any open forms include some event code that detects the shutdown and does something to prevent corruption or breakage.


You have the Unload and Deactivate events during which time you can close records or impose an Undo on a dirty form. Your last chance would be to catch something in the Close event, but that is stretching since some actions might by then have become untenable. There are ways to deny the unloading of a form, since that event allows a Cancel option. However, in that case, the Access app gets caught by the second part of the process shutdown loop, with a forced exit that CANNOT be blocked.

This "hardening" has to be implemented for every form that can be open. If you have a report that (unwisely) does something active behind the scenes while it is open, this "hardening" would apply to that report, too.
 

Users who are viewing this thread

Top Bottom