내 문제 : 직렬 포트를 수신하고 모든 항목을 RichTextBox에 추가하는 SerialPort에 대한 DataReceived 이벤트가 있습니다. 이제 RichTextBox의 내용을 txt 파일에 저장하고 싶습니다. 그냥 내 두 가지 작업 (가변 콘텐츠, 명확한를 RichTextBox 저장) 사이에 또 다른 입력하여 SerialPort에 올 수 있다고,RichTextBox에서 텍스트 삭제
string text = RichTextBox.Text;
// save file
RichTextBox.Clear();
그러나 나는 두려워 (그리고 만약 내가 잘못 나 수정하시기 바랍니다) : 나는이 작업을 수행 할 수 있습니다. 변수에 저장하지 않았고 RichTextBox를 지우지 않았기 때문에이 새로운 데이터가 삭제 될 수있었습니다.
이 일이 실제로 발생할 수 있으며 어떻게 피할 수 있습니까?
감사합니다.
Invoke (DataReceived 스레드에서)로 RichTextBox에 쓰므로 쓰기 및 읽기가 동일한 스레드 (GUI)에 있습니다. 그 말은 내 시나리오가 생길 수 없다는 뜻인가요? – sventevit
언뜻보기에 나는 Invoke를 사용하는 것이 당신을 보호 할 것이라고 생각하지 않았지만 이제는 이것을 생각했다. 이것이 당신을 보호 할 것이다. 좋은 대답입니다! +1 – David
SQL의 직렬 포트에서 모든 입력을 확인하고 상태를 다시 가져 오기 때문에 RichTextBox를 사용합니다. 상태가 'OK'이면이 입력에 대한 텍스트 색상은 녹색이고, 그렇지 않으면 텍스트 색상은 빨간색입니다. 그래서 연산자가 쉽게 입력이 OK인지 아닌지 알 수 있습니다. – sventevit