Well, actually ElementHost displays the whole WPF app within it.
I think, it does not allow you to update controls like ContentPresenter from outside(winforms appliction).
I think it would be a good practice to expose one method which will create this ContentPresenter for you.
Sacha Barbar proposed a good extension to work with Cross thread issues. You might take a look into it.
Check this :
public static void InvokeIfRequired(this DispatcherControl control, Action operation)
{
if (control.Dispatcher.CheckAccess())
{
operation();
}
else
{
control.Dispatcher.BeginInvoke(DispatcherPriority.Normal, operation);
}
}