This is what I think is happening.....
When creating a CIP connection, there is a timeout period set. After the timeout period with no activity, the PLC will drop the connection. The communication driver must also drop it's connection, so it knows it must open a new connection for more communication.
It sounds like the PLC is dropping connection faster than the communication driver is timing out and dropping its connection. They are essentially out of sync. The driver should drops it connection first. When you call CloseConnection, you are essentially forcing it to close, so the timeouts do not need to do anything, therefore making the driver close its connection first.