private void SaveImagesAndExcelProcess(object sender, DoWorkEventArgs e) { try { var worker = sender as BackgroundWorker; var arguments = e.Argument as object[]; var lines = arguments[0] as List <FileStatusLine>; var formatter = new ImageTransformer(lines, arguments[1].ToString()); if (worker.CancellationPending) { return; } formatter.Run(worker, (bool)arguments[2], (bool)arguments[3], arguments[4].ToString(), Int32.Parse(arguments[5].ToString()), Int32.Parse(arguments[6].ToString())); if (worker.CancellationPending) { return; } SaveDataToExcel(worker, arguments[7] as IList <ExcelRowDataModel>, lines, arguments[8].ToString()); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }