스레드가 활성화된 경우에도 C#에서 위임이 필요한 이유는 무엇입니까?
다른 분들의 답변에 문제나 오류가 있는 것 같습니다.
델리게이트의 개념을 이해하지 못하셨군요. .Net의 델리게이트는 본질적으로 함수에 대한 포인터이지만 이 포인터는 캡슐화되어 있으며 형식이 안전합니다. 위임과 스레드는 서로 다른 개념입니다. 스레드는 동적이지만 위임은 메모리 주소 또는 메모리 주소 그룹이며 정적입니다. 스레드가 실행 중에 함수에 대한 포인터를 만나면 이 함수를 실행합니다.
프로그래밍을 용이하게 하기 위해 .Net은 호출 스레드가 실행할 두 가지 메서드, 즉 각각 Invoke 및 BeginInvoke를 통해 열리는 동기 및 비동기 메서드를 대리자에게 제공합니다. Invoke는 동기적으로 실행되며 호출 스레드에 의해 실행되는 반면, BeginInvoke는 백그라운드 스레드를 열어 대리자가 가리키는 함수를 실행합니다. 백그라운드 스레드와 호출 스레드는 비동기 실행 모드에 속합니다. 실제로 대리자 개념을 사용하면 프로그래밍할 때 Thread 클래스를 직접 사용하여 새 스레드를 열 필요가 없습니다. Microsoft가 이를 구현해 주기 때문입니다.
MSDN을 잘 살펴보시기 바랍니다. 이러한 개념은 하루 이틀 만에 이해될 수 없습니다. 궁금한 점이 있으면 문의해 주세요.