public bool IsInstanceIdExists(string machineName, MinerClient.InstanceTypes instanceType, int val) { return(this.ClientList.Any(client => { return client.MachineFullName == machineName && client.InstanceTypeEnum == instanceType && client.InstanceId == val; } )); }
private void StepThree_DownloadPackage() { logger.Trace("Start StepThree_DownloadPackage."); string version = this.cbxMinerClientVersions.Text; if (string.IsNullOrEmpty(version)) { MessageBox.Show("请选择一个版本"); logger.Warning("Need to select one version to proceed."); return; } string instanceType = cbxMinerInstanceType.Text; selectedMinerClientType = (MinerClient.InstanceTypes)(this.cbxMinerInstanceType.SelectedIndex + 1); logger.Information($"Selected version: { version }."); logger.Information($"Selected instance type: { selectedMinerClientType }."); foreach (MinerClient client in createdClients) { client.Version = version; client.InstanceType = this.cbxMinerInstanceType.Text; client.InstanceTypeEnum = selectedMinerClientType; } winMinerBinary = new WinMinerReleaseBinary(version); BackgroundWork <int> .CreateWork( this, () => { ShowProgressIndicator("正在下载安装包......", btnStepThreeNext, btnStepThreeBack); }, () => { winMinerBinary.DownloadPackage(); return(0); }, (taskResult) => { if (taskResult.HasError) { HideProgressIndicator(); MessageBox.Show("下载过程出现错误: " + taskResult.Exception.Message); logger.Error("Got error while downloading package: " + taskResult.Exception.ToString()); } else { StepThree_ExtractPackage(); } } ).Execute(); }
/// <summary> /// When changing instanceType for 2+ clients on the same machine, it might has a situation that they will have the same instanceId, /// So in this step the MinerManager would detect the conflicts then assign new instanceId when necessary. /// </summary> /// <param name="client"></param> /// <param name="returnedInstanceId"></param> /// <returns></returns> private int AssignInstanceId(string machineName, MinerClient.InstanceTypes instanceType, int newInstanceId) { int assignedInstanceId = newInstanceId; string key = machineName + instanceType.ToString() + assignedInstanceId.ToString(); MinerManager manager = MinerManager.GetInstance(); while (this.newInstanceIdDictionary.ContainsKey(key) || manager.IsInstanceIdExists(machineName, instanceType, assignedInstanceId)) { assignedInstanceId++; key = machineName + instanceType.ToString() + assignedInstanceId.ToString(); } this.newInstanceIdDictionary[key] = true; return(assignedInstanceId); }