Quote:
port.DataReceived += new SerialDataReceivedEventHandler(new cEventHandler().DataReceivedHandler);
port.DataReceived -= new SerialDataReceivedEventHandler(new cEventHandler().DataReceivedHandler);
You've added two handlers to the event. Therefore, every time the event is raised, your event handler will be called twice.
Quote:
port.DataReceived -= new SerialDataReceivedEventHandler(new cEventHandler().DataReceivedHandler);
That line will have no effect.
When a delegate pointing to an instance method is removed from an event, the object reference to which the delegate points is included as part of its identity. Since you're creating a new instance of your class, the delegate you create is not equal to any of the registered handlers for the event, so removing it doesn't do anything.
The previous
port.DataReceived -= new SerialDataReceivedEventHandler(DataReceivedHandler);
line should already remove the handler, so you can just delete this line.