gpt4 book ai didi

c# - 跨线程操作

转载 作者:行者123 更新时间:2023-11-30 13:47:56 25 4
gpt4 key购买 nike

谁能告诉我 if 和 else 语句在这个函数中是如何相关的。我正在显示从另一个线程到 GUI 线程的文本。执行的顺序或方式是什么。 else语句有必要吗?

delegate void SetTextCallback(string text);

private void SetText(string text)
{
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textBox7.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox7.Text = text;
}
}

最佳答案

  1. 另一个线程调用SetText
  2. 因为它不是创建表单的线程,所以它需要 Invoke
  3. this.Invoke 使用给定参数再次调用 SetText。还要检查 this
  4. 现在 SetText 是从 UI 线程调用的,不需要 Invoke
  5. else block 中,我们确定文本已安全设置为线程

关于c# - 跨线程操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14704483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com