0

ポップアップウィンドウであるコントロールを使用します。私はそれを表示して非表示にするメソッドがあり、私は別のスレッドで私のポップアップを表示および非表示にする機能を実装する必要があります。ポップアップをUIスレッドで表示できますか?ポップアップを表示するスレッドを制御する方法

更新

私の質問の主な目的は次のとおりです。

それは方法の表示を開始するスレッド何から重要ではありません、メソッドを隠すには、同じスレッドにする必要があります。これを実装する方法は?

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; 
      } 
+0

表示するときにThread.CurrentThreadを保存するだけで、非表示にすると同じであるかどうかを確認できますか? まだ - 私はこの質問が別の問題を示していると主張します。なぜスレッドをチェックしたいのですか?目標は、いくつかの操作の進捗バーを表示することです - いくつかのオブジェクト(トークン)を作成して、進捗バーを操作に関連付けることができます。別の問題をデバッグする以外の方法でスレッドを管理する必要がある理由がわかりません。 –

答えて

0

通常、UIコンポーネントでの作業はUIスレッドでのみ実行できます。特定のポップアップがUIスレッドから開始されないようにするには、実行されたスレッドを内部的にチェックするインターフェイスを提供する必要があります.SynchronizationContextまたはThreadクラスを使用して終了する必要があります。 UIスレッドでメソッドを呼び出すことによってPopupを表示します。

+0

私は自分の質問を更新しました) – revolutionkpi

関連する問題