2008-09-21 3 views

답변

14

VB6은 멀티 스레드 응용 프로그램을위한 좋은 환경이 아닙니다. 즉시 사용할 수있는 지원이 없으므로 표준 WinAPI 기능을 탐구해야합니다. 매우 포괄적 인 샘플 제공이 문서를 살펴 보자 :

http://www.freevbcode.com/ShowCode.Asp?ID=1287

9

을 내가 여러 프로세스를 사용하여 VB6에서 비동기 처리를 구현 한 여러 프로젝트에. 기본적으로 기본 프로세스와는 별도로 활성 exe 프로젝트 내에 작업자 스레드가 있습니다. 작업자 exe는 필요한 데이터가 무엇이든지간에 전달 될 수 있습니다. 이벤트가 끝나거나 주 프로세스에 대한 데이터가 있다고합니다.

더 많은 리소스가 필요하지만 스레드가 아닌 별도의 프로세스이지만 VB6은 단일 스레드 아파트에서 실행되며 새 스레드를 시작할 수 있도록 지원되지 않습니다.

한 프로세스 내에 여러 스레드가 있어야하는 경우 VB6 대신 .NET 또는 VC6을 사용하는 것이 좋습니다.

2

해결하려는 문제가 긴 계산이고 사용자가 응답하는 상태로 유지하려는 경우 긴 계산 내에서 DoEvents 함수를 자주 호출하는 것이 좋습니다. 이렇게하면 프로그램이 모든 Windows 메시지를 처리 ​​할 수 ​​있으므로 UI가 사용자 명령에 응답합니다. 취소 버튼을 설정하여 프로세스를 종료해야 함을 알릴 수도 있습니다.

이렇게하면 긴 프로세스를 시작한 후 다시 실행하는 것과 같이 문제를 일으킬 수있는 컨트롤을 사용하지 않도록 조심해야합니다.

0

VB6에서 다중 스레드 용 Interop Forms Toolkit 2.0을 사용할 수 있습니다. Toolkit 을 사용하면 업그레이드 기능을 강요하지 않고도 .NET 기능을 활용할 수 있습니다. 따라서 .NET 사용자 정의 컨트롤을 VB6의 ActiveX 컨트롤로 사용할 수도 있습니다.