내 응용 프로그램에는 백그라운드 스레드에서 실행중인 작업이 있습니다. MessageBox 또는 모달 대화 상자가 UI 스레드에 표시 될 때 백그라운드 스레드에서 알림이 필요합니다.양식에 메시지 상자가 표시되는시기를 아는 방법은 무엇입니까?
MessageBox를 표시하기 전에 일부 기능을 호출하여 수동으로 수행 할 수 있지만 그렇게하지 않으면 좋을 것입니다. 예컨대 들어
:
backgroundThread.MessageShown(); // I do not want to call this explicitly every time!
MessageBox.Show("Task halted!");
내가 거기 추측하고 수도 나에 푹 수있는 몇 가지 메시지. 주 GUI 스레드에서도 모달 대화 상자가 표시되기 전에 시작되는 모든 메시지/이벤트가 있습니까?
좋아, 여기에 요구 사항이 있습니다. UI 스레드에서 수행되는 몇 가지 작업이 있으며 작업자 스레드에 표시된 별도의 대화 상자에서 진행 상황을 표시해야합니다. 나는 그것이 작업자 스레드에서 수행되어야하는 작업이되어야한다는 것을 알고 있지만 당분간은 현재 시나리오를 변경할 수 없습니다.
모든 결함이 하나의 결함을 제외하고 잘 작동합니다. 메시지 상자가 UI 스레드에 표시되면 진행률 대화 상자 아래에 숨겨집니다. 따라서 사용자는 UI가 입력을 기다리는 것을 결코 알 수 없습니다. 모달 대화 상자가 표시되었고 진행 대화 상자를 숨겨야한다는 알림을받을 방법이 필요합니다.
지금 당장 MessageBox를 호출하기 전에이를 명시 적으로 숨겨야합니다.
설명 드리겠습니다.
이것은 좋지 않을 수도 있지만 * 배경 스레드가 UI 상태에 대해 알아야하는 이유는 무엇입니까? –
@Damien_The_Unbeliever : 백그라운드 스레드가 UI 스레드이기 때문에 전경 UI 스레드에 따라 작동해야합니다! – nullDev