2010-12-19 6 views
1

VB.NET 용 테스트 프로그램을 실행 중이며 for 루프에서 백만 개의 숫자를 처리합니다. for 루프의 진행을 암시하는 변수를 진행 막대와 연결했지만 프로그램을 실행하면 진행률 표시 줄 자체가 업데이트되지 않는 것 같습니다. 막대 자체는 0-100의 값을 입력으로 가지고 있으며 for 루프를 사용하지 않고 테스트했습니다. 작동합니다.VB.NET에서 장기 실행 작업 중에 진행률 막대를 강제로 업데이트하려면 어떻게해야합니까?

이것은 스레드와 관련이 있다고 생각하지만, VB.NET에서 어떻게 작동하는지 정확히 알지 못합니다. 그래서 전문가의 조언을 구하고 싶습니다.

모든 조언을 주시면 감사하겠습니다.

+1

네, 스레드를 필요가 있다고 생각합니다. 루프는 다른 스레드에 있어야합니다. 그러나 UI UI의 스레드에서 항상 UI를 업데이트해야합니다 (.net에서는 ** 메인 스레드라고 생각합니다). 그러나 Mac/iOS 개발 만 할 때 완전한 답을 줄 수는 없지만 모든 부분이 동일하지만 브라우저에서 동일하다고 생각합니다. –

+0

VB 6에서는 쓰레드를하지 마십시오. * 가능 합니다만, * 확실히 * 가치가 없습니다. 특히 이것과 같은 간단한 것은 아닙니다. –

+0

VB6에서이 작업을 수행하고 있습니까? –

답변

3

여전히 .net (또는 VB6 질문 인 경우)에도 적용되는지 모르겠지만 Application.DoEvents은 일반적으로 VB6 일간의 해결책이었습니다.

진행률 표시 줄을 업데이트하는 루프 내에 Application.DoEvents을 시도하십시오.

+0

이것은 VB.NET에서 정확합니다. VB 6에서는'DoEvents' (이 클래스에는'Application' 클래스가 없습니다)라고 쓰면됩니다. 루프의 각 반복마다이 명령을 실행하여 진행률 막대가 업데이트되도록해야합니다. –

+0

VB.NET winforms에서 살펴볼 또 다른 사항은 system.componentmodel 아래 backgroundworker입니다. –

1

은 오래 전에하지만 난 당신이 DoEvents에게 문

관련 문제