Risolto il problema.

E' bastato dichiarare un delegate.invoke sulla main window. Ci avevo provato ma non trovava il metodo invoke.. dopo ho capito tramite altri esempi che l'utilizzo corretto nelle wpf è:

codice:
public delegate void nomedelegate();

this.Dispatcher.Invoke(new nomedelegate(nomefunzione));