2013-05-03 42 views
0

我使用下面的代碼來更新我的課延伸UserControl標籤無效:跨線程操作父控件

private delegate void LabelChanger(bool signedIn); 

public bool SignedIn 
{ 
    get { return _signedIn; } 
    set 
    { 
     _signedIn = value; 
     labelChanger(value); 
    } 
} 

private void labelChanger(bool signedIn) 
{ 
    if (label1.InvokeRequired) 
    { 
     BeginInvoke(new LabelChanger(labelChanger), signedIn); 
    } 
    label1.Text = signedIn ? "Sign Out" : "Sign In"; 
} 

的問題是,當代碼到達設定標籤文本, UI被更新,但是我在標籤的父項面板上得到了一個`InvalidOperationException。任何想法爲什麼?謝謝。

+0

看看這個InvalidOperationException的InnerException和堆棧跟蹤。 – JeffRSon 2013-05-03 14:40:51

回答

5

即使您在錯誤的線程中,label1.Text = signedIn ? "Sign Out" : "Sign In";也會執行。你應該附上一個else {}

+0

我不敢相信我沒有看到..謝謝! – 2013-05-03 14:42:13