All access to WPF controls must be done on the UI thread, so your OnPressEvent should look something like this
private void OnPressEvent()
{
if(!Dispatcher.CheckAccess())
{
Dispatcher.Invoke((Action) OnPressEvent, null);
return;
}
IsPressEventLaunced = true;
EventHandler<eventargs> temp = PressEvent;
if (temp != null)
{
temp(this, new EventArgs());
}
}