如何在VB.NET中使用BeginInvoke

时间:2016-05-17 14:24:42

标签: c# .net vb.net begininvoke

在C#中,您使用BeginInvoke,如下所示:

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

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

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

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

这是{strong>不重复How to use BeginInvoke C#,因为问题和每个答案都使用C#(如果使用任何编程语言)。当您不确定是否使用了正确的VB.NET语法时,C#-code没有多大帮助。

2 个答案:

答案 0 :(得分:1)

是的,(Action) (() =>不会返回任何内容,因此VB.Net中的Sub是等效的。如果它确实返回了某些内容,它将成为C#中的Func。

答案 1 :(得分:1)

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

您获得了正确的转化。

虽然请注意BeginInvoke()必须后跟EndInvoke(),否则会导致线程泄漏。

相关问题