gpt4 book ai didi

vb.net - 从受影响的特定控件调用 Invoke 的目的是什么?

转载 作者:行者123 更新时间:2023-12-02 09:17:36 25 4
gpt4 key购买 nike

假设我有以下子程序,它只是将传递的项目添加到 ListView 控件:

Private Sub AddListItem(ByVal item As ListViewItem)
UIList.Items.Add(item)
End Sub

我从BackgroundWorker线程中使用它,如下所示:

UIList.BeginInvoke(Sub() AddListItem(lvItem))

很偶然,我刚刚发现使用哪个控件来调用 Invoke\BeginInvoke 似乎并不重要。方法,或者即使我完全省略一个控件并直接调用该方法 - 我假设只是使用 Me.<Method>在幕后——这似乎并不重要。该代码仍然有效。

那么,使用受影响的控件调用该方法是否只是一种使代码更容易执行的方法?如果有的话,其他优点是什么?使用不同的控件时是否需要注意某些陷阱?

最佳答案

使用ILSpy并挖掘Control.Invoke method ,摘录如下

...
UnsafeNativeMethods.PostMessage(
new HandleRef(this, this.Handle),
Control.threadCallbackMessage,
IntPtr.Zero,
IntPtr.Zero);
...

此外,MSDN states :

The Invoke method searches up the control's parent chain until it finds a control or form that has a window handle if the current control's underlying window handle does not exist yet. If no appropriate handle can be found, the Invoke method will throw an exception. Exceptions that are raised during the call will be propagated back to the caller.

所以通常情况下,发布到哪个控件并不重要。

就我个人而言,我使用可以调用的“最近”控件来调用 Invoke 方法。

关于vb.net - 从受影响的特定控件调用 Invoke 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719785/

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