2010-11-18 2 views
1

GUI 스레드에서 얼마 동안 실행되는 코드가 있습니다 (단순화하기 위해 Button_Click 이벤트로 가정).사용자에게 "Please wait"메시지 표시 및 숨기기 방법

메서드가 시작되면 "Please wait"메시지를 표시하고 작업을 계속하고 싶습니다. 작업이 완료되면 메시지를 숨기고 계속 진행합니다. 당신은 몇 가지 장기 실행 프로세스가있는 경우, 당신은 일을해서는 안

MBox.Show("Please wait..."); 
//do my work... 
MBox.Hide(); 
+0

메인 UI 스레드에서 작업하고 싶지 않다 ... 인터페이스가 잠겨 추락 한 것처럼 보이게 만듭니다. 항상 사소한 일이면 백그라운드 스레드에서 수행하십시오. MessageBox를 사용하면 사용자가 작업을 얼마나 오래 실행할지 알 수있는 방법이 없습니다. 가능한 경우 진행률 표시 줄을 원합니다. – Ian

답변

1

.Net 4를 사용하는 경우 배경 작업자와 함께 작동하도록 Task을 실행할 수 있습니다. 그렇지 않으면 스레딩을 할 수 있지만 동일한 스레드에 있어서는 안됩니다.

3

:

은 내가 BackgroundWorker (또는 다른 스레드 관련)와 함께이 작업을 수행 할 수 있습니다 알고 있지만, 내가 기대했다 이미 같은 완료 뭔가있다 UI 스레드에서. BackgoundWorker의 문제점은 무엇입니까? 그 수업은 훌륭합니다! 이 Winforms 애플 리케이션을 사용하는 것이 좋습니다 것이 좋습니다.

0

이렇게하려면 자신 만의 양식을 만들 수 있습니다. 기다릴 필요가 있거나 기다려야하는 경우 사용자를 기다리게하는 것은 본질적으로 나쁘지 않습니다. 우리는 정상적인 작업 흐름에 짧은 대기 시간이 필요한 애플리케이션을 보유하고 있습니다. 백그라운드 스레드에 배치하는 것은 사용자가 다른 작업을 수행하기 전에 작업이 완료 될 때까지 기다릴 필요가 있기 때문에 사용자에게 도움이되지 않습니다.

관련 문제