public IActionResult Index() { ChooseDevice chooseDevice = new ChooseDevice() { DeviceList = new SelectList(IotMessageSender.DeviceToConnectionString.Keys) }; return(View(chooseDevice)); }
public IActionResult Index(ChooseDevice device) { if (!ModelState.IsValid) { return(View()); } if (!IotMessageSender.DeviceToConnectionString.Keys.Contains(device.DeviceName)) { return(Index()); } Email = device.Email; if (Email != null) { HttpContext.Session.SetString("Email", Email); } return(RedirectToAction("Detect", "home", new { deviceName = device.DeviceName })); }
/// <summary> /// 启动指定的模块。 /// </summary> /// <param name="models">需要启动的模块列表。</param> /// <returns>成功返回true,错误返回false。</returns> private static bool StartupModels(IEnumerable <BasicClass> models) { // 判断模块是否初始化 var modelsList = models.ToList(); if (modelsList.Contains(null)) { return(false); } // 选择设备 var index = new PointerPacker(""); var chooseDevice = new ChooseDevice(ref index); while (true) { chooseDevice.ShowDialog(); // 用户点击了取消,中止本次操作 var value = (string)index.Item; if (value.Length == 0) { return(true); } // 检查设备网络是否有效 var device = (WinPcapDevice)CaptureDeviceList.Instance[value]; var isValid = false; foreach (var address in device.Addresses) { if (address.Addr.sa_family != 2) { continue; } isValid = true; break; } if (isValid) { break; } var dialogResult = MessageBox.Show("无法确定指定设备的IPv4网络环境,仍然继续?", "警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (dialogResult == DialogResult.OK) { break; } } // 创建载入界面 var task = new Thread(init => { try { foreach (var model in modelsList) { model.CurDevName = index.Item.ToString(); } } catch (ThreadAbortException) { foreach (var model in modelsList) { model.CurDevName = ""; } } }) { Name = RegisteredThreadName.StartupModels.ToString() }; MessagePipe.SendInMessage(new KeyValuePair <Message, Thread>(Message.TaskIn, task)); var loading = new Loading("设置模块中,请稍候", task); loading.ShowDialog(); // 等待结果 var result = Message.NoAvailableMessage; new WaitTimeoutChecker(30000).ThreadSleep(500, () => (result = MessagePipe.GetNextOutMessage(task)) == Message.NoAvailableMessage); // 用户取消 if (result == Message.UserCancel) { MessagePipe.SendInMessage(new KeyValuePair <Message, Thread>(Message.TaskCancel, task)); new WaitTimeoutChecker(30000).ThreadSleep(500, () => (result = MessagePipe.GetNextOutMessage(task)) == Message.NoAvailableMessage); switch (result) { case Message.TaskAborted: return(false); case Message.TaskOut: break; case Message.TaskNotFound: MessageBox.Show("未能找到指定名称的工作线程。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); default: throw new Exception($"无效的消息类型:{result}"); } } // 任务完成 MessagePipe.ClearAllMessage(task); return(true); }