I don't know Windows stuff, but I wonder if you are opening and closing the serial port. If so, don't. Keep the serial port open until you are completely finished with the Arduino.
I do not close serialport on C# application. I always listen comport on C# and waiting data from answer. But as I said to you, data comes wrong sometimes. but when I changed the delay on function from 20ms to 50ms it send true. Also send the data as char array, a character eachtime with a loop but it made the same mistake. when I changed the delay again. It did not make the mistake but sending a chactar with 50ms delay it takes 1 second and it is to high for me. I need to send data with 5hz. so I need to send all data between 200ms.
The C# application is listening to Serial, right?
The Serial1 data goes somewhere else, so you can see what is sent, right?
So why are you NOT sending the SAME data to Serial and Serial1?
Making (foolish) assumptions about collecting and parsing the data sent to Serial, based on what you see sent to Serial1 is not reasonable when you do not send the same data to each.
You COULD send the same data to each AND then collect the data in the C# app AS FAST AS POSSIBLE, until the carriage return/line feed arrives, and THEN show the collected data.