private void btnStepOneNext_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(txtTargetPath.Text)) { MessageBox.Show("请输入安装矿机的有效路径", "提示"); return; } deploymentFolderPath = txtTargetPath.Text.Trim(); List <MinerMachine> machineList = dataGridMachines.GetAllMachines(); if (machineList.Count == 0) { MessageBox.Show("请输入机器名称", "提示"); return; } if ((machineList.Count > 1 || !machineList[0].IsLocalMachine()) && string.IsNullOrWhiteSpace(txtTargetUserName.Text)) { MessageBox.Show("请填写用于连接目标机器的用户名和密码信息", "提示"); return; } if (!string.IsNullOrWhiteSpace(txtTargetUserName.Text)) { string username = txtTargetUserName.Text.Trim(); if (string.IsNullOrEmpty(txtTargetUserPassword.Password)) { MessageBox.Show("请输入用户的密码", "提示"); return; } string password = txtTargetUserPassword.Password.Trim(); MachineCredential credential = new MachineCredential() { UserName = username, LoginPlainPassword = password }; // Consolidate the credentials foreach (MinerMachine m in machineList) { m.Credential = credential; } } createdClients.Clear(); for (int i = machineConnectivityCache.Count - 1; i >= 0; i--) { MachineConnectivity connectivity = machineConnectivityCache[i]; if (!machineList.Any(m => m.FullName.Equals(connectivity.Machine.FullName))) { machineConnectivityCache.RemoveAt(i); } } foreach (MinerMachine machine in machineList) { createdClients.Add(new MinerClient(machine, deploymentFolderPath)); if (!machineConnectivityCache.Any(conn => conn.Machine.FullName.Equals(machine.FullName))) { machineConnectivityCache.Add(new MachineConnectivity(machine)); } } SwitchUIToStep(2); }
private void StepTwo_TestMachineConnections() { if (!needRefreshMachineConnections) { return; } dataGridMachineConnections.ClearItems(); MachineConnectivityBackgroundWork connectivityWork = new MachineConnectivityBackgroundWork(this); connectivityWork.OnUpdated += MachineConnectivity_OnUpdated; connectivityWork.SetTestingFolderPath(deploymentFolderPath); foreach (MinerClient client in createdClients) { MachineConnectivity connectivity = machineConnectivityCache.FirstOrDefault(conn => conn.Machine.FullName.Equals(client.Machine.FullName)); if (connectivity == null) { throw new InvalidDataException($"Null MachineConnectivity found in machineConnectivityCache with machineName=[{ client.Machine.FullName }]."); } connectivity.ResetFailureResults(); dataGridMachineConnections.AddItem(connectivity); connectivityWork.AddConnectivity(connectivity); } BackgroundWork.CreateWork( this, () => { /// lblTestConnectionNotice.Content = "正在测试目标机器的连接,请稍后..."; ShowProgressIndicator("正在测试目标机器的连接,请稍后...", btnStepTwoNext, btnStepTwoBack); }, () => { connectivityWork.DoWork(); }, (taskResult) => { HideProgressIndicator(); if (taskResult.HasError) { MessageBox.Show("测试出现错误:" + taskResult.Exception.Message); logger.Error("Error while testing connection: " + taskResult.Exception.ToString()); return; } bool hasFailure = machineConnectivityCache.Any(conn => !conn.IsAllTestingSuccess()); if (hasFailure) { btnStepTwoNext.IsEnabled = false; MessageBox.Show("连接测试结果中有部分异常,请按照说明在目标机器上运行XDaggerMinerAssistant,然后退回上一步重试."); logger.Warning("MachineConnectivityWork Finished with some failure, following is the detailed data:"); foreach (MachineConnectivity conn in machineConnectivityCache) { logger.Warning(conn.FullResult()); } } needRefreshMachineConnections = false; } ).Execute(); }
public void AddItem(MachineConnectivity connectivity) { dataGridItems.Add(new MachineConnectivityDataGridItem(connectivity)); this.dataGrid.Items.Refresh(); }