I debug a little more:
The Disconnect method is calling Thread.Abort(). If the Plm was inside the Receive method, this will render the COM port opened and the program itself will no longer be able to connect
In general calling Thread.Abort should NEVER be called. Instead I propose that you start a new Task using Task.Start and pass a cancellation token. When Disconnect is called, then call CancellationTokenSource.Cancel to cancel the task gracefully.
I can provide a fix for this. Will try to submit a push request later.