private void Disconnect(bool restart) { connected = false; port.DataReceived -= Port_DataReceived; checkPort.Stop(); if (restart && !port_finder.IsBusy) // Connection is lost { port_finder.RunWorkerAsync(); } else // Disconnect is requested from UI { port.Close(); } Disconnected.ThreadAwareRaise(this, new ConnectedEventArgs(port.PortName)); }