Hi Tom,
First, about the ThreadSuspend, you should take a look at the Wiki here.
About your scenarios. Not so sure about Scenario 1. You sure you didn't have any settings in code for HttpContext.Session.Timeout ?
Scenario 2 is correct. Session times out after 1 minute, but no request is sent until the KeepConnectedInterwal is reached, and that's when you get redirected to the logon screen. Nothing actually happens at the client when the session times out. Just on the server.
To automatically return the user to the logon screen after 8 minutes you could do that by having a session timeout of 7 minutes, KeepConnectedInterwal at 8 minutes ( 8 * 60 * 1000 in the setting), and KeepConnectedLimitation must be at least 2, taking into account that you might loose those KeepConnected requests from time to time, so make sure they are at least two. But, you could as well have then going on indefinitely with these settings. Session should timeout during every such period.
Note however that if the user returns to his workstation after 7 minutes and before 8 minutes he will be directed to the login screen when he tries to do something on the client, as the session has allready timed out.
I do not think you can guarantee which one comes first, the KeepConnectedRequest or the timing out of the session if you set them both to 8 minutes.
Hope this clarifies,
Palli