I 긴 텍스트 파일을 읽고 매우 긴 작업을 수행하는 VB6로 작성된 프로그램이 있습니다. 진행률 표시 줄도 구현했지만 문제는 내 프로그램이 "응답하지 않음"이라고 말한 후 작업이 완료되면 다시 응답하기 시작합니다.VB6 응용 프로그램이 응답을 멈춘다
'응답하지 않음'문제를 어떻게 제거합니까?
I 긴 텍스트 파일을 읽고 매우 긴 작업을 수행하는 VB6로 작성된 프로그램이 있습니다. 진행률 표시 줄도 구현했지만 문제는 내 프로그램이 "응답하지 않음"이라고 말한 후 작업이 완료되면 다시 응답하기 시작합니다.VB6 응용 프로그램이 응답을 멈춘다
'응답하지 않음'문제를 어떻게 제거합니까?
Windows/Explorer는 메시지를 처리하지 않고 프로세스가 너무 길어질 때 프로세스가 "응답하지 않음"상태로 변경됩니다. VB6에서는 DoEvents
을 호출하지 않고 코드의 긴 부분을 실행할 때 발생합니다.
불행히도 VB6에서는 여러 스레드를 쉽게 처리 할 수 없으므로 작업 중에 DoEvents
을 정기적으로 호출하는 것이 가장 좋습니다. 이상적으로는 진행률 막대 위치를 업데이트 한 직후입니다.
이렇게하면 재진입을 막을 수 있도록주의해야합니다. 이는 긴 작동이 시작될 때 컨트롤을 비활성화하고 완료되면 작동을 다시 설정하는 것으로 충분합니다. 취소하려는 경우 취소 버튼 클릭 이벤트에서 설정 한 부울 값을 사용하고DoEvents
을 호출 한 후 을 확인해야합니다.
+1 논의 된대로 [here] (http://stackoverflow.com/questions/155517/cancelling-a-long-running-process-in-vb6-0- 하지 않고 - doevents) – MarkJ
장시간 사용시 DoEvents
으로 전화 할 수는 있지만 various caveats과 관련하여주의하십시오.
Welcome to StackOverflow. [에티켓] (http://stackoverflow.com/faq#etiquette)에 대한 FAQ 및 관련 페이지를 읽고 SHOUT를하지 않거나 굵은 텍스트를 불필요하게 사용하지 않을 수도 있습니다. – Deanna
관련 질문 [Vb6의 장기 실행 프로세스 취소]에 관심이있을 수 있습니다. (http://stackoverflow.com/questions/155517/cancelling-a-long-running-process-in-vb6-0-without- doevents) 및 [VB6의 스레드 사용] (http://stackoverflow.com/questions/383162/to-use-thread-in-programming-in-vb6) 및 [Vb6 앱의 kill 이벤트 만들기] (http : //stackoverflow.com/questions/727386/making-ac-sharp-kill-event-for-a-vb6-app). 제목과 관련이없는 것 같지만 대답이 유용 할 것입니다. VB6에서 백그라운드 처리를 할 수있는 몇 가지 다른 방법을 설명합니다. – MarkJ