2011-08-28 62 views
1

我嘗試兩次調用,然後再次調用另一個對象。WPF從兩個線程調用

public void Show() 
{ 
    if (mainGrid == null) 
     return; 
    if (!Dispatcher.CheckAccess()) 
    { 
     Dispatcher.BeginInvoke(new ThreadStart(delegate() { Show(); }), DispatcherPriority.Background); 
     return; 
    } 

    mainGrid.Children.Add(rec); 
    rec.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; 
    rec.VerticalAlignment = System.Windows.VerticalAlignment.Stretch; 

    mainGrid.Children.Add(this); 
    this.HorizontalAlignment = System.Windows.HorizontalAlignment.Center; 
    this.VerticalAlignment = System.Windows.VerticalAlignment.Center; 
} 

兩個物體B,C繼承了這一功能,從A: 當我從過程調用B.show(),然後B.showStop()從線程和C.sh​​ow()我得到異常使用特權主.children.Add(..)來自C.show() 請幫我解決這個問題。

+0

我刪除了第二個方法聲明,因爲它似乎是完全一樣的東西。 (你有意外粘貼兩次嗎?) –

+0

你得到的實際異常是什麼?和'showStop()'的代碼是什麼? – svick

回答

1

我想你應該提供關於你的問題更多的信息,例如:

  • 哪種類是A(這似乎是雖然一個UI對象)
  • 什麼是REC

但是現在我認爲問題可能是你正在實例化那些不在UI中的視覺對象。線程:如果你在一個工作線程上創建一個按鈕,它將會有該線程分派器,這與UI線程分派器。

我不能準確地告訴你這麼少的信息發生了什麼,但我認爲你添加了兩個在不同線程上創建的控件,因此兩個Add中的一個會給你一個例外。

+0

謝謝!解決了這個問題。 –