Reputation: 2058
In C# you use BeginInvoke
like this:
obj.BeginInvoke((Action)(() =>
{
//do something
}));
I tried to translate it to VB.NET, and ended up with this code, that seems to work:
obj.BeginInvoke(
Sub()
'do something'
End Sub
)
The snippets look very different to me, especially because the (Action) (() =>
part is missing completely. Is this the correct way to use BeginInvoke
in VB.NET?
this is not a duplicate of How to use BeginInvoke C# because the question and every answer uses C# (if any programming language is used). C#-code doesn't help much when you are unsure about if you used the correct VB.NET syntax.
Upvotes: 4
Views: 7780
Reputation: 18310
(Action)
just casts the lambda to an Action
, which isn't needed in VB.NET. The Sub()
lambda is all you need.
You have got the correct conversion.
Although note that BeginInvoke()
must be followed by EndInvoke()
, otherwise you will get thread leaks.
Upvotes: 3
Reputation: 65594
Yes, the (Action) (() =>
doesn't return anything so Sub
in VB.Net is equivalent. It'd be a Func in C# if it did return something.
Upvotes: 1