private void LoadGridData() { Action workAction = () => { BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += (o, args) => { args.Result = _fService.GetAllBookings().Select(b => new { ID = b.bookingID, Tid = b.totalTime, Pris = b.totalPrice, Personer = _fService.GetBookingPassengers(b.bookingID).ToList().Count, Flyforbindelser = _fService.GetBookingFlights(b.bookingID).ToList().Count }); }; worker.RunWorkerCompleted += (o, args) => { dgBookings.ItemsSource = (IEnumerable)args.Result; }; worker.RunWorkerAsync(); }; dgBookings.Dispatcher.BeginInvoke(DispatcherPriority.Background, workAction); }