yes and no, yes this is one way to safely update your form. no, you got some details wrong.
1) do not use any variables that you do not have direct control from any thread code, especially globals, aka stop using the Form1 variable, it might not update what you expect and have a crash.
2) Synchronise, although perfectly valid choice, is the worst choice you have if updates are rapid, it might be preferable to use Application.QueueAsyncCall just make sure that the call you queue is a method of the form you update not the thread and you are as safe as you can be.