private void CheckFlags(FLAG _stepDataIdentifier1, Packet packet, FLAG _stepDataIdentifier2 = FLAG.CLOSE, int WaitingTime = 5000) { try { stepDataIdentifier1 = _stepDataIdentifier1; stepDataIdentifier2 = _stepDataIdentifier2; receivePacket.ID = FLAG.Null; ChangeProgressData(stepDataIdentifier1.ToString()); try { if (connection != null) { SendMessage(packet, connection); } } catch { connection = null; } Thread.Sleep(1000); while (receivePacket.ID != stepDataIdentifier1 && receivePacket.ID != stepDataIdentifier2 && !stopped) { if (stopped || failed) { return; } try { if (connection != null) { SendMessage(packet, connection); } } catch { connection = null; } if ((receivePacket.ID == FLAG.SYN_FLAG || receivePacket.ID == FLAG.SYN_FLAG_WINPE) && (receivePacket.ID != stepDataIdentifier1 || receivePacket.ID != stepDataIdentifier2)) { cloneFaildMessage = "CLIENT NEED RESTART"; restart = true; return; } Thread.Sleep(WaitingTime); } if (!failed && !stopped) { progressComputerData = new ProgressComputerData("Images/Done.ico", computer.Name, receivePacket.ID.ToString(), executedTaskData.GetFileName(), "", computer.MacAddress); } SaveProgress(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
public void Start() { FileHandler.Save <ExecutedTaskData>(executedTaskData, executedTaskData.GetFileName()); if (executedTaskData.taskData.Cloning) { string sessionName = executedTaskData.Started + "_" + executedTaskData.taskData.Name; if (executedTaskData.taskData.BaseImageSourcePath != "") { CreateSession(sessionName, executedTaskData.taskData.BaseImageData.SourcePath); } if (executedTaskData.taskData.DriveEImageSourcePath != "") { CreateSession(sessionName + "_DriveE", executedTaskData.taskData.DriveEImageData.SourcePath); } } RefreshList(); for (int i = 0; i < executedTaskData.taskData.TargetComputers.Count; i++) { var computer = new ComputerInTaskHandler(executedTaskData, clients, i, ipAddresses, semaphoreFotSaveFile, listViewAll, listViewSelected); computers.Add(computer); var computerThread = new Thread(computer.Start); computersThreads.Add(computerThread); computerThread.Start(); } AddComputersToListViewAll(); Application.Current.Dispatcher.Invoke(() => { listViewTaskDetailsProgress.Items.Add(executedTaskData); listViewTaskDetailsProgress.SelectedItems.Clear(); listViewTaskDetailsProgress.SelectedItems.Add(listViewTaskDetailsProgress.Items[listViewTaskDetailsProgress.Items.Count - 1]); }); foreach (ComputerInTaskHandler computer in computers) { computer.semaphoreForTask.WaitOne(); if (!computer.stopped && !computer.failed) { executedTaskData.Done = (Convert.ToInt16(executedTaskData.Done) + 1).ToString(); } else { if (computer.failed) { imagePath = "Images/Failed.ico"; } } } Finish(imagePath); }
private void SaveProgress(ProgressComputerData progress) { if (progress.Step != "Null") { semaphoreForSaveFile.WaitOne(); executedTaskData.progressComputerData.Add(progress); FileHandler.Save(executedTaskData, executedTaskData.GetFileName()); semaphoreForSaveFile.Release(); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { if (executedTaskData != null) { executedTaskData = FileHandler.Load <ExecutedTaskData>(executedTaskData.GetFileName()); foreach (ProgressComputerData progressComputerData in executedTaskData.progressComputerData) { listViewProgressDetails.Items.Add(progressComputerData); } } }
private void MenuItemDetailsDeleteAll_Click(object sender, RoutedEventArgs e) { if (listViewTasksDetails.SelectedItems.Count != 0) { for (int i = listViewTasksDetails.Items.Count - 1; i >= 0; i--) { ExecutedTaskData taskDetails = (ExecutedTaskData)listViewTasksDetails.Items[i]; if (taskDetails.Status != "Images/Progress.ico") { string path = taskDetails.GetFileName(); if (File.Exists(path)) { File.Delete(path); listViewTaskDetailsHandler.Refresh(); } } else { bool exist = false; for (int j = ExecutedTasksHandlers.Count - 1; j >= 0; j--) { ExecutedTaskHandler item = ExecutedTasksHandlers[j]; if (item.executedTaskData.Name == taskDetails.Name && item.executedTaskData.Started == taskDetails.Started) { exist = true; break; } } if (!exist) { string path = taskDetails.GetFileName(); if (File.Exists(path)) { File.Delete(path); listViewTaskDetailsHandler.Refresh(); } } } } } }