如何控制我显示弹出窗口的线程

时间:2012-03-17 13:27:01

标签: c# silverlight windows-phone-7 silverlight-4.0 silverlight-3.0

我使用的是一个弹出窗口控件。我有一个显示和隐藏它的方法,我需要实现一个功能,以防止显示和隐藏我的弹出窗口在不同的线程。我可以在UI线程中显示我的弹出窗口吗?

更新

我的问题的主要目标是:

从方法Show开始的哪个线程开始,方法隐藏应该在同一个线程中并不重要。如何实现这个?

 public void Show()
        {
            IsShown = true;
            if (this.ChildWindowPopup == null)
            {
                this.ChildWindowPopup = new Popup();
                    try
                {
                    this.ChildWindowPopup.Child = this;
                }
                catch (ArgumentException)
                {
                    throw new InvalidOperationException("The control is already shown.");
                }
            }       
            if (this.ChildWindowPopup != null && Application.Current.RootVisual != null)
            {
                // Configure accordingly to the type
                InitializeProgressType();
                    // Show popup
                this.ChildWindowPopup.IsOpen = true;
            }
        }

 public void Hide()
        {
            IsShown = false;
            // Restore system tray
            SystemTray.IsVisible = currentSystemTrayState;
            this.progressBar.IsIndeterminate = false;
            this.ChildWindowPopup.IsOpen = false;
            }

1 个答案:

答案 0 :(得分:0)

通常,UI组件的工作只能在UI线程中完成。如果你想阻止你的特定弹出窗口从UI线程启动,你需要提供一个启动它的接口,在内部检查它已执行的线程 - 可能使用SynchronizationContext或Thread类,但最后 - 它将需要通过在UI线程上调用方法来显示Popup。