참고하면 좋은 C# Solution의 다른 글
Thread에서 Form에 있는 Control의 값을 변경하려고 시도하게 되면 크로스 스레드 예외가 발생한다.
해결 방법은 delegate와 Invoke를 사용하는 것이었다.
그러나 이 방법은 delegate를 수행해야 하는 동작마다 생성해서 사용해야 하는 번거로움이 있다.
별도의 delegate를 생성하지 않고 하나의 문장으로 처리하는 방법을 소개한다.
void setText(string text)
{
Invoke(new Action(delegate()
{
textBox1.Text = text;
}
}
위와 같이 Action 클래스의 생성자에 일회성 delegate를 넣을 수 있는데, { } 안에 수행할 동작을 적으면 된다. 당연하게도 메서드처럼 취급되기 때문에 여러 줄을 적을 수도 있다.
'.NET > WinForm' 카테고리의 다른 글
[WinForm] Drag & Drop으로 컨트롤과 컨트롤 간에 개체 옮기기 (0) | 2022.11.13 |
---|---|
[WinForm] Drag & Drop으로 파일 가져오기 (0) | 2021.07.27 |
[WinForm] 마우스 휠로 이미지 확대/축소 (0) | 2021.07.21 |
[WinForm] 텍스트박스 입력 무시/숫자만 입력 가능하도록 하기 (0) | 2021.07.13 |
[WinForm] 크로스 스레드(Cross Thread) 문제 해결 (0) | 2021.07.13 |