/// <summary> /// 检测所有设备 /// </summary> public void CheckAllDevice() { MsgShow.ShowWarning("正在检测设备。。。"); MainThreadDelayAction.Run(3000, MsgShow.Clear); List <IDeviceInfo> deviceIdList = App.Instance.FlightBusManager.CheckDevice(); #if Test deviceIdList = new List <IDeviceInfo>() { new DeviceInfo() { BoardNo = 1, BoardType = BoardType.A429 }, new DeviceInfo() { BoardNo = 1, BoardType = BoardType.A1553 } }; #endif int i = 0; foreach (IDeviceInfo item in deviceIdList) { DeviceUiInfo info = new DeviceUiInfo(); info.BoardNo = item.BoardNo; info.BoardType = item.BoardType; info.DevID = item.DevID; info.Name = "localDevice_" + i++; info.IsSelected = true; _deviceUiInfos.Add(info); } MsgShow.ShowWarning("设备检测完毕。。。"); MainThreadDelayAction.Run(3000, MsgShow.Clear); }
public void Invoke() { //下面几行暂时没有用。我的想象中,程序的打开、关闭、运行的各种时机不应该由界面Form的情况 //来获知,(因为界面也只是程序过程的一种时机)应该由程序自身BhRuntime.Instance来响应, //所以有了下面几行代码。 Form mainForm = new MainWindow(); mainForm.Load += (o, e) => { App.Instance.RaiseStarted(); App.Instance.BeingInvokeEvent += mainForm.BeginInvoke; App.Instance.InvokeEvent += mainForm.Invoke; App.Instance.IsMainFormExisted += () => mainForm.IsHandleCreated; }; mainForm.Closing += App.Instance.RaiseWindowClosing; mainForm.Closed += App.Instance.RaiseWindowClosed; //主线程延迟调用行为的初始化 MainThreadDelayAction.Initialize(act => { if (mainForm.IsHandleCreated) { if (mainForm.InvokeRequired) { mainForm.BeginInvoke(act); return; } } act(); }); //运行主窗口 Application.Run(mainForm); }