숨 깁니다 "기다려주세요", 그래서 WAIT가 형성 제발 만든 나는이 같은 다른 스레드에서 호출폼 나는 내 응용 프로그램에 일부 긴 프로세스를 기본 폼
public void ShowWait()
{
continueWait = true;
ThreadPool.QueueUserWorkItem((x) =>
{
using (frmWait espera = new frmWait())
{
espera.ShowInTaskbar = false;
espera.Show();
while (continueWait)
Application.DoEvents();
espera.Close();
}
});
}
그리고 양식을 닫습니다 내가 사용 : 대기에 양식이 표시 될 때
public void HideWait()
{
continueWait = false;
}
그것은 잘 작동하지만 내가 문제가가, 기본 폼 손실 초점과 동시에 실행중인 다른 응용 프로그램 (엑셀, 워드, 등) 간다 상단으로 내 애플 리케이션은 모든 응용 프로그램의 뒷면에 간다. Activate() 및 Focus()를 사용하려고했지만 작업 표시 줄의 프레임 만 활성화되지만 응용 프로그램은 모든 응용 프로그램의 뒷면에 남아 있습니다.
여기에 표시되는 점 은요?
미리 감사드립니다.
while 루프를 'HideWait' 메서드에서 신호를 보내는 Waithandle (예 :'ManualResetEvent')을 사용하여 바꾸는 것이 좋습니다. 그렇게하면 불필요한 CPU 리소스를 사용하지 않게됩니다. –
수동 또는 자동 재설정 이벤트를 사용하면 응용 프로그램이 중단되고 대기 양식에 대기 애니메이션이 표시되지 않으며 전체 응용 프로그램이 신호를 기다립니다. – Argons
이미 여러 번 여기에서이 문제를 해결했습니다. 다음을 확인하십시오. 1. http://stackoverflow.com/questions/2183520/backgroundworkers-never-stop-being-busy/2183963#2183963 2. http : // stackoverflow.com/questions/2152445/displaying-please-wait-message/2153082#2153082 – Oliver