C#, MONO

쓰레드 동작중에 Invoke로 문자 쓰기

gigasound 2021. 8. 9. 11:06

Thread로 동작중에 화면에 내용을 표시하고 싶을 때가 있습니다.

그런데 Thread에서 폼으로 접근하는 것이 잘 되지 않습니다. 

해결 방법으로  Invoke를 사용합니다.

이 글은 Invoke delegate를 이용해서 lcdlabel에 글자를 쓰는 방법입니다.

Invoke((MethodInvoker)delegate {
    this.lcdLabel.Text}
);

아래와 같이 사용해도 됩니다.

 private void WriteText(Control ctrl,string s) {
 	if(ctrl.InvokeRequired) { 
 		ctrl.Invoke(_TextWriter,ctrl,s); 
 	}
 	else { 
 		ctrl.Text = s; 
 	}
 }

이 방법은 Text를 포함하는 모든 도구에 사용이 가능합니다.