직렬 포트 (C#/.Net)를 정의한 다음 데이터를 수신 할 때마다 SerialDataReceivedEventHandler을 할당했습니다. 데이터가 수신 될 때마다직렬 포트 데이터가 수신되었을 때 여러 동작을 처리하는 방법
myPort.DataReceived += new SerialDataReceivedEventHandler (myEventHandler);
그러나 나는 등의 여러 가지 작업을 수행해야합니다 내 SQL 데이터베이스에
- 저장 데이터를.
- 업데이트 UI
- 에를 RichTextBox는
내가 이 MyEventAPIHandler 내에서 모든 기능을 실행해야 응답 직렬 메시지를 다시 보내; 그게 올바른 연습인가요? 문제는 예를 들어, RichTextBox을 myEventHandler에서 변경하려고 할 때 크로스 스레드 작업을 수행 중임을 알리는 오류가 발생합니다.
UPDATE :
private void myEventHandler (object sender, SerialDataReceivedEventArgs e)
{
Action myAction =() => rtbMyRichTextBox.Text = InputMessageString;
if (rtbMyRichTextBox.InvokeRequired)
rtbMyRichTextBox.Invoke(myAction);
else
myAction();
StoreToSqlDatabase();
SerialWriteResponseMessage();
}
어떻게 위 내 업데이트 같은 어떻습니까? – boardbite
@boardbite : 정상 작동합니다. 당신은'this.InvokeRequired'와'this.Invoke'를 사용할 수 있습니다. –
잘 설명되어 있습니다. ** UI 업데이트 ** 스레드에서만 크로스 스레드 문제가 우려됩니까? 또는 ** SQL 데이터베이스 통신 **과 별도 스레드에서 실행중인 스레드 간 문제뿐만 아니라 ** 직렬 쓰기 **를 다른 스레드에서 실행합니까? – boardbite