버튼과 진행률 막대가있는 간단한 폼이 있습니다. 사용자가 버튼을 클릭하면 처리가 시작되고 코드가 실행되는 동안 진행률 막대가 움직입니다. 이 경우에는 for 루프 일뿐입니다. 그러나 문제는 진행 막대가 잠깐 동안 만 나타나고 사라지는 것입니다.코드 실행 중 진행 표시 줄 (선택 윤곽)이 사라짐
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.MarqueeAnimationSpeed = 100;
for (int i = 0; i < 3; i++) { Thread.Sleep(1000); } // sleep 3 times for 1 second
}
코드가 계속 된 후 프레임이 다시 그려지기 때문에 이런 현상이 발생한다고 생각하십니까? 그래서 다른 스레드에서 for 루프를 실행하려고했지만 문제가되지 않았다.
루프가 실행되는 동안 어떻게 막대를 애니메이션으로 만들 수 있습니까?
감사
나는 BackgroundWorker를 더욱 홍보합니다. 그게 가장 좋은 방법입니다. – gunr2171
@ gunr2171 가장 좋은 방법은 'async' 키워드를 활용하는 것입니다. 하지만 네,'BackgroundWorker'는'DoEvents' 호출보다 훨씬 낫습니다. –
@DanielMann, 내가 본 것처럼 DoEvent는 아무 것도하지 않습니다. 그리고 스레드 사이에 객체를 전달하기위한 프레임 워크가 이미 존재하기 때문에'BackgroundWorker'라고 말합니다. 가장 중요한 부분 인 진행 상황에 대한 상태 메시지를 보내는 것과 함께. – gunr2171