如何在 VB.NET 中使用 BeginInvoke

How to use BeginInvoke in VB.NET

在 C# 中,您可以像这样使用 BeginInvoke

obj.BeginInvoke((Action)(() =>
{
    //do something
}));

我试着将它翻译成 VB.NET,最后得到了这段代码,它似乎有效:

obj.BeginInvoke(
    Sub()
        'do something'
    End Sub
)

这些片段在我看来非常不同,尤其是因为 (Action) (() => 部分完全缺失。这是在 VB.NET 中使用 BeginInvoke 的正确方法吗?


不是 How to use BeginInvoke C# 的副本,因为问题和每个答案都使用 C#(如果使用任何编程语言)。当您不确定是否使用了正确的 VB.NET 语法时,C# 代码没有太大帮助。

是的,(Action) (() => 没有 return 任何东西,因此 VB.Net 中的 Sub 是等价的。如果它做了 return 某事,它将是 C# 中的 Func。

(Action) 只是将 lambda 转换为 Action,这在 VB.NET 中不需要。 Sub() lambda 就是您所需要的。

您的转换正确。

虽然注意BeginInvoke()后面必须跟EndInvoke(),否则会出现线程泄漏。