private void saveAssignment() { //Use threading to stop system from "Hanging" as it may take a long time to save //as a list of objects are sent over via SOAP System.Threading.Thread thread = new System.Threading.Thread( new System.Threading.ThreadStart( delegate() { System.Windows.Threading.DispatcherOperation dispatcherOp = this.Dispatcher.BeginInvoke( System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate() { try { Mouse.OverrideCursor = Cursors.Wait; MessageBox.Show("Please wait while we process your request..."); TasksHelper client = new TasksHelper(); try { Task[] taskList = this.lstAssignedTask.ItemsSource.Cast<Task>().ToArray(); //MessageBox.Show(taskList[0].TaskName); client.AssignTask(user, event_.EventID, int.Parse(cboRole.SelectedValue.ToString()), taskList); } catch (Exception ex) { MessageBox.Show("An error have occured: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } finally { client.Close(); } } catch (Exception ex) { MessageBox.Show("An error have occured: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } )); dispatcherOp.Completed += new EventHandler(dispatcherOp_Completed); } )); thread.Start(); }