2017-12-14 2 views
0

wxWizard을 사용하고 있습니다. 제 3 페이지에서 백엔드에서 함수를 호출해야하는데, 응답이 오랜 시간이 걸리며 응용 프로그램이 멈추고 제목이 응답하지 않습니다. . 그 응답이 백엔드 기능에서 수신되면 응용 프로그램은 정상적으로 작동합니다. 왜 이런 일이 일어 났습니까? 내가 뭔가 잘못하고 있는거야? 그 앱이 멈추지 않게하려면 어떻게해야합니까? 백엔드 기능의 응답은 일부 네트워크 문제 또는 백엔드의 처리 시간이 길기 때문에 지연됩니다.백엔드의 응답이 오랜 시간이 걸리면 wxWidget 응용 프로그램이 응답하지 않습니다

답변

0

this answer을 참조하십시오. 다음은 추출물입니다.

응용 프로그램은 Windows에서 제공하는 대기열에서 이벤트를 가져옵니다.

예를 들어 긴 계산을 수행하는 경우와 같이 응용 프로그램이 이벤트 대기열을 잠시 (5 초) 폴링하지 않으면 Windows는 응용 프로그램이 중단되어 사용자에게 경고한다고 가정합니다.

응용 프로그램이 값 비싼 계산을 작업자 스레드로 밀어 넣거나 처리를 분할하고 큐가 정기적으로 폴링되도록 방지해야합니다.

그래서, 코드의 문제는 프로그램에서 하나의 스레드 만의 주요 스레드가 있다는 것입니다. 예를 들어 모든 활동을 돌보고 있습니다. UI 업데이트, 이벤트 처리, 사용자 응답 (매우 적은 시간이 소요됨). 그러나 사용시에는 에 백 큐 서버와 함께 연결을 처리하면 시간이 걸립니다.입니다. 따라서 다른 스레드를 사용하여 네트워크 작업을 처리해야합니다. 이런 식으로 메인 스레드는 정상적으로 작동하며 응답하지 않음을 나타내지 않습니다.

관련 문제