首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用InvokeRequired与control.InvokeRequired

使用InvokeRequired与control.InvokeRequired
EN

Stack Overflow用户
提问于 2009-02-09 12:28:54
回答 3查看 27.4K关注 0票数 10

InvokeRequiredsomecontrol.InvokeRequired之间的区别是什么

像这样,

代码语言:javascript
运行
复制
delegate void valueDelegate(string value);

private void SetValue(string value)
{
   if (InvokeRequired)
   {
       BeginInvoke(new valueDelegate(SetValue),value);
   }
   else
   {
       someControl.Text = value;
   }
}

代码语言:javascript
运行
复制
delegate void valueDelegate(string value);

private void SetValue(string value)
{   
    if (someControl.InvokeRequired)
    {
        someControl.Invoke(new valueDelegate(SetValue),value);
    }
    else
    {
        someControl.Text = value;
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-09 12:34:52

第一个版本检查负责此控件的线程。第二个版本检查负责someControl的线程。(然后将调用委托给哪个控件的线程。)

它们可能是不同的-尽管如果两个控件在同一个顶级窗口中,它们实际上不应该是不同的。(一个窗口中的所有控件都应在同一线程上运行。)

票数 20
EN

Stack Overflow用户

发布于 2009-02-09 12:35:10

不同之处在于您访问该属性的控件。如果从表单方法中访问InvokeRequired,就可以有效地访问表单的InvokeRequired属性。

如果表单和someControl是在同一个线程中创建的,那么它们将返回相同的值。

票数 3
EN

Stack Overflow用户

发布于 2009-02-09 12:37:14

在第一个示例中,您似乎在控件的范围内,而在第二个示例中,您不在此范围内。主窗体是一个控件,就像其他控件一样。如果将someControl添加到主控件的控件集合中,则可以使用以下任一方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/527947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档