The truth is, updating UI controls in a Windows form is not always thread safe. For example, when you try to set text to a TextBox control in a thread that isn’t the one in which it is created, VS will pop up an InvalidArgumentException. Note, if you do not get this exception when you try to do this, you are not lucky! You may incidentally turn off this warning in your configuration of VS, or you are not running applications under debug model. Neither way is preferred. Once you deploy your application, you may have complex and tricky bugs just because you are not aware of the unsafe using of controls.
Since you have ideas on why VS prevents you from modifying controls in another thread, you must keen to know the solution. Yes, the solution is, modify controls back in the thread that creates it. You can use delegation to pass the modification code from your thread back to the main thread from where you can safely update your control. The mechanism is implemented via Invoke methods. There is a short article that you can read to know more about this.
Remember next time, don’t be frustrated when you come across this exception. This benefits later on when your application is really running in front of end users.
Until next time, happy coding.