Ciao.
Tiani conto che questo è solo un esempio.
homeep l'ho dichiarato object perchè non so di che tipo sia .... è ovvio che tu dovrai tipizzarlo a dovere.

codice:
delegate void Dl(object homeep); 
private void ThreadSeparato() 
{ 
    object HomeEp = new object(); 
    this.Invoke(new Dl(OpenWindowmanager), HomeEp); 
} 
private void OpenWindowmanager(object homeep) 
{ 
    WindowManager.Open(homeep); 
}
Il concetto, comunque, grosso modo è questo:
Ci sono A e B che parlano al telefono......A è il thread principale e B sono gli oggetti che A è occupato a gestire.
C(thread separato) vuole parlare con A ma non riesce perchè è occupato a parlare con B
Quindi.....C incarica D(Delegate) di andare da A a dirgli:
Chiama(Invoke) C che ti deve dire una cosa.
Quindi....A smette di parlare con B chiama C, sente cosa deve fare, lo fà.....e poi ritorna a parlare con B.


Facci sapere...
Ciao