No, it's not correct, not even close.
Using
Invoke/BeginInvoke
, you are not doing anything asynchronously. In a way, it's just the opposite: you synchronize the method being invoking with the UI thread, and, in case of
BeginInvoke
, also with the calling thread. I explained it here:
Control.Invoke() vs. Control.BeginInvoke()[
^],
Problem with Treeview Scanner And MD5[
^].
There is nothing wrong with that, but this is only needed if you do something is a separate thread (other than the UI thread) and want notify the UI and perform some UI action based on the other thread data and triggered by that thread. It has nothing to do with "bit faster", but, without the delegation mechanism, you would not be able to update the UI thread at all.
In your question, there is no indication that you are using any other thread, so all you do is pointless. If your code works, it's only because
Invoke/BeginInvoke
methods are designed to work even if you use them in a UI thread. Such a fool-proof "fallback" feature. :-)
—SA