2015-01-22 1 views
0

다른 양식에서 서비스의 컨텐츠를로드하는 동안 팝업 창이 표시되도록합니다. 한 번 이상 실행되면이 문제가 발생하지만 창에서 콘텐츠가 사라집니다. 그래서 나는 아무 일도 발생하지WPF 앱에서 '잠시 기다려주십시오'팝업 창 표시

private Forms_Controls.BusyPopupWindow pop = new Forms_Controls.BusyPopupWindow(); 

    private void _ThreadPopupAnimation_DoWork(object sender, DoWorkEventArgs e) 
    { 
     int x = 0; 


     pop.Show(); 
    } 

    private void _ThreadPopupAnimation_RunWorkerCompleted(object sender, 
            RunWorkerCompletedEventArgs e) 
    { 


    } 
    private readonly BackgroundWorker _ThreadPopupAnimation = new BackgroundWorker(); 
    // Get the instance of the existing form. 
    private void GrdViewCompletedForms_OnMouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     _ThreadPopupAnimation.DoWork += new DoWorkEventHandler(_ThreadPopupAnimation_DoWork); 
     _ThreadPopupAnimation.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_ThreadPopupAnimation_RunWorkerCompleted); 
     _ThreadPopupAnimation.RunWorkerAsync(); 
// function continues to load form... 

를 제외하고 ... 스레드를 사용하는 것을 시도하고있다. 스레드 내부의 코드가 호출되었지만 아무것도 수행하지 않습니다. 팝업 창에서 회 전자를 사용했지만 양식이 이미로드 될 때까지 작동하지 않았습니다.

+0

Dispatcher를 통해 pop.Show()를 보내면 어떨까요? UI 코드는 UI 스레드에서 실행되어야합니다. – Nzc

답변

0

나는 스레드가없는 해결책으로 해결했습니다. 팝업은 일정 시간 동안 사용자에게 경고하는 정적 컨텐츠를 보여줍니다. 팝업 창에서 일어날 일이 저를 넘어선 것입니다!

public FormView(String jSon, String jSonContent, String addressLine1, String postCode, String instanceId, int OwnerID) 
    { 
     InitializeComponent(); 
     BackgroundWorker _ThreadPopupAnimation = new BackgroundWorker(); 
     BusyPopupWindow pop = new BusyPopupWindow(); 

     pop.Show(); 

    // load form full of media content... 
     var newFormCreator = new FormCreator(jSon, jSonContent, addressLine1, postCode, instanceId, OwnerID); 
     newFormCreator.OnFormsUpdated += newFormCreator_OnFormsUpdated; 
     mainContent.Content = newFormCreator; 

     pop.Close(); 

    }