это должно работать, если вы создаете поток, в котором вы вызываете showDialog:
var thread = new Thread(new ParameterizedThreadStart(param => { saveFileDialog.ShowDialog(); })); thread.SetApartmentState(ApartmentState.STA); thread.Start();