인수를 위해 UI 스레드는 Application.Run()
에 대한 호출이 있거나 해당 호출 중 하나가 호출되어 활성 메시지 루프가 실행중인 스레드로 간주합니다.UI 스레드에 있는지 확인하는 방법은 무엇입니까?
현재 해당 스레드에서 실행 중인지 여부를 감지하는 방법이 있습니까?
내가 원한 이유는 장기 실행 개인 기능을 가진 클래스가 있기 때문입니다. 클래스 자체는 이미 멀티 스레드되어 있으며,이 클래스의 사용법은 UI 나 처리를 수행하는 백그라운드 스레드에서 사용될 수 있습니다. 이 함수는 또한이 네트에 들어갑니다. 그러나 UI 스레드를 막지 않기를 바랍니다. 그래서 UI 스레드에서 실행 중인지 감지하고 싶은 경우 함수 호출을 백그라운드 스레드로 포크 (아마도 ThreadPool
,하지만이 토론에 대해서는 비공개)합니다. 이것은 전적으로 잘 동작하지만 백그라운드 스레드는 아마도 함수의 출력에 의존하고 있으므로 UI 스레드가 더 "set-and-forget"방식으로 액세스하는 반면 UI 스레드가이를 차단하는 것이 좋습니다.
startupthread는 반드시 GUI 스레드 또는 GUI 스레드 일 필요는 없습니다. –
WRONG : InvokeRequired는 "컨트롤이 만들어진 스레드와 다른 스레드"인 경우 true를 반환합니다. –
@Rico : 예, 물론입니다. 오타가 지난 3 년간 아무도 눈치 채지 못했다고 나는 믿을 수 없다. 그것을 잡아 주셔서 감사합니다, 나는 그에 따라 답변을 업데이 트했습니다. –