Well maybe not but you can get close in some circumstances.
I've got a situation where when a timer ticks I want to change the background colour of a textbox on a windows form. Since I don't need to pass in any parameters if I was using c# I could use
Control.Invoke and an anonymous method… especially since I know I'll always be accessing this control in this method from a different thread.
But VB .Net doesn't support anonymous methods. Now I've seen all kinds of verbose ways around this on the web… google it - I dare you.
But if you use Action as below you're pretty close to hardly any extra code…
Public Sub removeHighlight() Handles timer.Elapsed timer.Stop() If txtSingleCheck.InvokeRequired Then txtSingleCheck.Invoke(New Action(AddressOf removeHighlight)) Else txtSingleCheck.BackColor = Color.White End If End Sub
So long as the delegate or action you are calling has the same signature as the method you're calling it in then you call
InvokeRequired on the control in question and if true you call a new action with the
AddressOf the method you're in otherwise you do what you wanted to do but on the appropriate thread.
Bot as powerful as anonymous methods I'll grant you but in situations like this it isn't that far removed… is it?