做一个'请等待'在WPF应用程序中弹出窗口显示

时间:2015-01-22 10:05:47

标签: wpf multithreading popup

我想要一个弹出窗口显示,而另一个表单从服务加载内容。 我可以实现这一点,但如果内容不止一次运行,内容就会从窗口中消失。 所以我试图使用Threads ...

 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...

除了没有任何反应。线程中的代码被调用但没有做任何事情。 我尝试在弹出窗口中使用微调器,但在表单已经加载之前不起作用。

1 个答案:

答案 0 :(得分: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();

    }