void Surface() { var control = new SurfaceControl(); var vm = new SurfaceControlViewModel() { IsBusy = true }; control.DataContext = vm; OpenView("3 Matrix Analyse(" + ProcessMode.ToString() + "):" + GetHeader(), control); Task.Factory.StartNew(() => { try { Save(); Dictionary <string, List <Tuple <double, double, double> > > rl = TargetObject.Get3DCurve(); App.Current.Dispatcher.Invoke(() => { vm.LoadData(rl); }); } catch (Exception ex) { LogSupport.Error(ex); } }).ContinueWith((t) => { vm.IsBusy = false; }); }