From MSDN
Only one open connection can exist for each SerialPort object.
The best practice for any application is to wait some time after calling the Close method before trying to call the Open method, since the port cannot be closed immediately.
When you call Close (), this workflow takes time to rotate and exit. The required amount of time is not indicated, and you cannot verify that this has been done. All you can do is wait at least one second before calling Open () again.
SwDevMan81
source share