Here is what you need to do: use
of some other controls, first of all, of your form. It will work correctly!
Also, consider using
instead. If you're sure that your invocation call is always from non-UI thread, you may want to skip
check and always use
Please see all the detail in my other Answer: Control.Invoke() vs. Control.BeginInvoke()
Now, I'll explain why it does not matter which control is used for calling the invocation methods. The invocation mechanism works at the level of
and the thread running
usually called UI thread. The mechanism is described in the referenced document and further references and based on the queue. The only requirement for the
instance which instance method is used for invocation is being a part of the same
which is usually the case unless you try very risky tricks with threads and Forms.