Ho risolto il problema finalmente!
Il mio programma così è modulare e su diversi thread.
Il problema principale era l'organizzazione del codice. Ho creato una classe che effettua l'elaborazione più lunga e viene avviata a parte.
Ho passato alla classe il form1, cioè il chiamante, in questo modo facendo una invoke con una variabile a cui assegno form1, invece che form1.invoke, sembra non creare problemi e non creare doppie icone o comportamenti indesiderati.
Ovviamente poi tutti i riferimenti a controlli del form1 vengono fatti dallo stesso invocando funzioni dal thread separato.
Grazie a tutti per l'aiuto!![]()