簡體   English   中英

C#交叉線程操作錯誤

[英]C# cross thread operation error

在用於模擬lan messenger的ac#程序中,我有一個beginreceive的回調函數,我需要顯示在特定文本框中收到的文本.. this.textBox1.Text = sb.ToString(); 但是,這樣做,我得到一個跨線程操作無效錯誤。 我確實意識到我需要使用object.invoke方法,但是請你提供完整的代碼來調用委托,因為在涉及線程時我仍然天真。謝謝你

您需要將工作推回到UI; 幸運的是,很容易:

this.Invoke((MethodInvoker) delegate {
    this.textBox1.Text = sb.ToString();
});

這使用C#的“匿名方法”和“捕獲變量”功能來完成所有繁重的工作。 在.NET 3.5中,您可能更喜歡使用Action ,但這沒有什么區別:

this.Invoke((Action) delegate {
    this.textBox1.Text = sb.ToString();
});

您可以這樣使用它:

void MyCallback(IAsyncResult result)
{
if (textBox1.InvokeRequired) {
    textBox1.Invoke(new Action<IAsyncResult>(MyCallBack),new object[]{result});
    return;
}
// your logic here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM