Westa, I made some updates to the code that, actually, seems to make it work better.
I moved the call to the set permissions to the Page_Init
These are the steps that I used now, that seem to work real-time ever time
I can post the code if you would like, but here are just the steps for now
1. Clear the module permission cache for the tab
DotNetNuke.Common.Utilities.DataCache.ClearModulePermissionsCache(this.TabID);
2. Get the current user info (UserController.GetCurrentUserInfo())
3. Call to set the roles by doing the following
-Using the roles controller add and remove roles
-Retrieve the portal roles cookie value
-Reset the portal roles cookie value to the new value.
4. Set the "Context" User info with the new roles
5. Update the user's account wiht the new roles (UserController.UpdateUser())
I had most of the code in the Page Load before, but now that I have moved it to the page init and added some more steps, it seems to be working better now
Before I did this update, the roles would get removed real-time, but there was still about a 10 sec delay on adding the roles and the modules/action buttons realizing that the user has the correct roles.
Let me know if you would like me to post some code snipets.
Gary