如何在 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()
,否则会出现线程泄漏。
在 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()
,否则会出现线程泄漏。