ok, immaginavo una situazione del genere, ma come mai non fai tutto dentro il form principale (e non dentro la program) e usi un timer? la cosa penso che ti complicherebbe meno la vita....
poi ovviamente è indiscutibile che magari hai i tuoi motivi, ma da quello che mi hai detto mi pare la soluzione ideale quella di fare tutto dentro il form.

quindi avvii il form (non credo sia necessario passargli dei parametri nel costruttore visto che il primo avvio lo fai con null) normalmente con application.run, dentro esso metti un metodo che determina la logica per l'aggiornamento, un timer che controlla la stringa che arriva da Tcp/IP (o ne simula gli effetti random), o ancora meglio, visto che immagino che farai in modo che la ricezione della stringa sia asincrona, crei un evento che che chiama il metodo per l'aggiornamento.

altra curiosità : il form secondario deve esistere necessariamente? devi fare delle modifiche e/o visualizzazzioni separate dal form principale?