2014-10-21 1 views
2

내 로그인 양식의로드 윈도우를 만들었고 BackgroundWorker를 사용하여 부드러운 로딩 애니메이션을 만들었지 만 ShowDialog() insted가 Show() 인 경우로드 창이 화면에 남아 있고 프로그램 아무것도하지 않는다. 이 문제의 원인은 무엇입니까? 여기BackgroundWorker를 사용하여 요청이 완료되지 않는 것 같습니다.

나는 BackgroundWorker에 호출하고 난로드 페이지 보여

private void LoginBV_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { 
    loadscr.Close(); 
    //and show the MainWindow, etc. 
} 

DoWork (BackgroundWorker에) 코드 :

private void LoginBV_DoWork(object sender, DoWorkEventArgs e) { 
     NameValueCollection POST = new NameValueCollection(); 
     POST["username"] = ipbUN.Text; 
     POST["password"] = ipbPASS.Text; 
     POST["pin"] = ipbPIN.Text; 
     POST["csoport"] = "user"; 

     var action = Program.startPOST<DataObj>("http://localhost/system/winapi.php?do=userlogin", POST); 

     finish["sessionkey"] = action.sessionkey; 
     finish["status"] = Convert.ToString(action.status); 
    } 

private void loginButton_Click(object sender, EventArgs e) { 
    loadscr.Show(); 
    LoginBV.RunWorkerAsync(); 
} 

여기에 내가로드 창을 닫으을

답변

5

MSDN article on ShowDialog을 참조하십시오.

"당신은이 메소드가 불려 당신의 응용 프로그램입니다.에 모달 대화 상자를 표시하려면이 방법을 사용할 수 있습니다 코드는 대화 상자가 닫힐 때까지 실행 하지 않습니다 다음."

모달 대화 상자 (ShowDialog)를 사용하면 무언가/누군가가 대화 상자를 닫을 때까지 코드 실행을 중단 할 수 있습니다. 프로그램을 "일시 중지"합니다. ShowDialog을 호출 한 후 시작하기 때문에 백그라운드 작업자가 실행되지 않습니다.

+0

실제로, 나는 2 줄을 바꿨다. 이제는 잘 작동한다. 고마워. – mbalint987

관련 문제