No, io non ho errori di compilazione ne tanto meno di runtime.
L'unico inconveniente che ho (avrei) è che se nel thread separato, nella sub, se da qualche parte compare form1 (o altri form del mio progetto), quindi se faccio riferimento ad oggetti di un altro form mi si duplica la notifyicon del form1, cioè è come se avviasse un nuovo form as form1.
Di questo ho trovato qualche informazione sul web, ho letto che è un problema della programmazione ad oggetti gestita in vb .net. Se vuoi ti linko quel che ho trovato.
Ma ho risolto passo passo, e con molto l'aiuto del debug, togliendo i riferimenti ad altri form e loro oggetti.
Però per l'appunto ora mi rimangono circoscritte 2 chiamate a sub di thread differenti (una sub in form1 che sotto condizione scatena un form3.button3_click, e un'altra sub in form1)

Ora se provo nel thread separato a scrivere form1.subdaavviare()
Non da nessun errore, ne in runtime ne di compilazione.
Però una volta avviato, appena arriva a chiamare quella istruzione mi si duplica la notifyicon.
Per ovviare a questo devo chiamare la funzione invocandola, cioè chiamandola come se fosse lo stesso form1 che lo fa, in modo che il thread separato "non c'entri" e così salto l'empasse che ora ho.

Spero di esser stato più chiaro, son qui per spiegazioni, spero riesci a darmi una mano, perché molto probabilmente sbaglio qualcosa, ma cosa? Dove? Non trovo nulla online che mi indirizzi nella via giusta.