gpt4 book ai didi

c# - MethodInvoker 的区别?

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:29 25 4
gpt4 key购买 nike

这有什么区别:

richTextBox1.Invoke((MethodInvoker)(() => richTextBox1.Clear()));

还有这个:

Invoke((MethodInvoker)(() => richTextBox1.Clear()));

?

第一个更好吗?

最佳答案

第二个正在调用 Invoke关于隐式 this引用,大概用于 Form 中的代码或 UserControl .

鉴于此,两者都使用了 Control.Invoke 的继承版本方法。这意味着问题简单地变成了:

What's the difference between calling Invoke on different Controls?

如果控件绑定(bind)到同一个 UI 线程,则没有。

如果它们绑定(bind)到不同的 UI 线程,那么您调用的方法将在完全不同的消息循环中运行,并由完全不同的线程处理。如果您从委托(delegate)体内的不同 UI 线程访问控件,您将遇到异常(或更糟的是,意外行为)。

拥有多个 UI 线程是一件非常糟糕的事情。如果可以避免,请不要使用它们。假设您接受该建议,这意味着谁控制您并不重要Invoke (只要您不调用 null 控件)。

关于c# - MethodInvoker 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18364004/

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