O thread de chamada não pode aceder a este objecto porque existe outro thread que já o tem

Application.Current.Dispatcher.BeginInvoke(
  DispatcherPriority.Background,
  new Action(() => 
    button_proximo.RaiseEvent(new RoutedEventArgs(System.Windows.Controls.Primitives.ButtonBase.ClickEvent));
);