It turns out that the best way to run long tasks in ArcMap is to use the IProgressDialog2. The BackgroundWorker in combination with ArcObjects (STA Threads) is a mess.
However, it seems that the only implementation from ESRI is the IStepProgressor. In my case I do not need and do not want to show a progress bar. Moreover I do not need the cancel button.
Is there a way to remove both things? I want only the text and the circle as you can see in my screenshot 
public static void ShowProgressDialog<T>(string message, Action<T> action, T arg)
{
ESRI.ArcGIS.esriSystem.ITrackCancel trackCancel = new ESRI.ArcGIS.Display.CancelTrackerClass();
ESRI.ArcGIS.Framework.IProgressDialogFactory progressDialogFactory = new ESRI.ArcGIS.Framework.ProgressDialogFactoryClass();
// Set the properties of the Step Progressor
System.Int32 int32_hWnd = ArcMap.Application.hWnd;
ESRI.ArcGIS.esriSystem.IStepProgressor stepProgressor = progressDialogFactory.Create(trackCancel, int32_hWnd);
ESRI.ArcGIS.Framework.IProgressDialog2 progressDialog2 = (ESRI.ArcGIS.Framework.IProgressDialog2)stepProgressor; // Explict Cast
progressDialog2.CancelEnabled = false;
progressDialog2.Description = message;
progressDialog2.Animation = ESRI.ArcGIS.Framework.esriProgressAnimationTypes.esriProgressSpiral;
action.Invoke(arg);
trackCancel = null;
progressDialog2.HideDialog();
progressDialog2 = null;
}