2016-01-28 33 views
2

我一直在尋找約3小時,無法得到這個調用工作。我需要調用,因爲它叫做不同的線程,並說它不穩定。調用自我繞過不同的線程? C#

這裏是我打電話是什麼(我這樣稱呼它textBox1_TextChanged(null, null);):

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    if(this.InvokeRequired) 
    { 
     this.Invoke(this?WHAT GOES HERE, null); // I know it should be a delegate or something but I can't change this to that 
    } 
    else 
    { 
     string temp = ""; 
     temp += TextToAdd; 
     textBox1.Text = "s"; 
    } 
} 
+1

提示:通常你想避免使用'Invoke',因爲1)它會阻塞工作線程2)會導致線程死鎖。考慮使用'BeginInvoke'來代替Jonas在 – MickyD

回答

2

您可以使用BeginInvoke更新從其他線程的用戶界面。

if (this.InvokeRequired) 
{ 
    var action = new Action(() => textBox1.Text = "s"); 
    this.BeginInvoke(action); 
} 
+0

以下的正確答案。謝謝你的工作,但有時會發生這種情況http://piclair.com/w77is你知道如何解決這個問題嗎?再次感謝你lol –

+0

不能說這麼多關於這個圖片,但它看起來像是UI線程,如果從UI線程調用該方法,則不需要調用。 InvokeRequired from MSDN「獲取一個值,該值指示調用方在對控件進行方法調用時是否必須調用invoke方法,因爲調用方所在的線程與創建該控件的線程不同。 –

+0

大聲笑我試了一下,似乎解決了這個問題,但你仍然可以使用vs,但我認爲它是固定的 –