Why does the VNCsharp client for a XenServer remote console freezes when screen resolution increases
I'm using the VNCsharp .NET control to attach to remote XenServer sessions using their VNC protocol. This control has been working great except for one when the VM's resolution is increased. For example from 800x600 to 1024x768. The console viewer in XenCenter handles this situation fine!
In that case, it appears as if the XenServer stops sending screen updates. However, I hooked up Wireshare and there are clearly still packets being sent to my client. I've checked to make sure that VNCsharp is handling the boundary conditions (stream changes) and that looks OK. If the resolution request times out then the screen will work again when Windows goes back to the original reso开发者_运维知识库lution.
If I drop the connection and reconnect then the client happily renders the new resolution.
I suspect that there is some reset signal that I'm missing. Is there something in the VNC RPC about this? If so, I could not find it.
Suggestions?
I resolved this problem, but it feels like a hack. I had to add a stream timeout (5 seconds) to the ReadByte call. The host drops the stream and the client does not detect it.
In order to keep the timeout from firing due to inactivity, I had to add a keepalive thread that sends a mouse move if the client is idle. I think there is a more elegant way to do the keep alive, but it's working for now.
精彩评论