Can someone explain to me why the 1st example gives me an error complaining about cross thread yada yada....but the second doesn't, and works?

this is inside a worker thread function

Code:
form1.visible = false
Code:
if not form1.invokerequired then form1.visible = false
I understand the concept of needing delegates and all that jazz when working with multiple threads, but why give me an error if there's no invoke required anyway?