How to set bpy.context.window.scene in the right context?
I think the answer to my question is a simple copy of context. So:

ctx = bpy.context.copy()

bpy.ops.render.render('INVOKE_DEFAULT')

###This is handled with some handlers, but essentially seems to work with a simple context copy

for s in bpy.data.scenes:
     if s == my_scene:
         ctx['window'].scene = s


I think this is the answer to my question, but I won't vote for it right now as I could probably cheat in future problems.
For now everything seems to work ok.