Don't abort the thread.
Instead, use a timeout on the SerialPort (
SerialPort.ReadTimeout Property[
^] which will cause the read operation to throw a timeout exception). Use a semaphore to tell the thread to terminate when it can, and let it close down in an orderly way.