using log4net; using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Regions; using Prism.Services.Dialogs; using SqlSugar; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using DM_Weight.Models; using DM_Weight.Port; using DM_Weight.util; using DM_Weight.Views; using System.Timers; using Unity; using System.Windows.Threading; using Newtonsoft.Json.Linq; using DM_Weight.msg; using System.Threading; using DM_Weight.Common; using System.Windows.Media; using MaterialDesignThemes.Wpf; namespace DM_Weight.ViewModels { public class HomeWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime { private readonly ILog logger = LogManager.GetLogger(typeof(HomeWindowViewModel)); private readonly IDialogService _dialogService; private UserList? _userList; private UserList? _userList2; /// /// 冰箱温度 /// private string _wd = "恒温冷藏抽屉当前温度2.8(非真实数据)"; public string WD { get => _wd; set => SetProperty(ref _wd, value); } private SolidColorBrush _alertColor = Brushes.White; public SolidColorBrush AlertColor { get => _alertColor; set => SetProperty(ref _alertColor, value); } /// /// 是否有冰箱抽屉 /// private string hasFridge = ConfigurationManager.AppSettings["hasFridge"].ToString().Equals("1") ? "Visible" : "Collapsed"; public string HasFridge { get => hasFridge; set => SetProperty(ref hasFridge, value); } //温度区间 private string TemperatureRange = CommonClass.ReadAppSetting("temperatureRange").ToString(); //温度不在区间计时器(超过配置文件中的时间后要报警) public DateTime? FridgeTime { get; set; } //冰箱是否异常状态:0正常,1异常 //public string FridgeWorkingState = ConfigurationManager.AppSettings["FridgeworkingState"].ToString(); //冰箱开关状态:0开,1关 public string FridgeState = ConfigurationManager.AppSettings["FridgeState"].ToString(); //冰箱渡不在区间超时时间 private string _outRangeTime = ConfigurationManager.AppSettings["OutRangeTime"].ToString(); public string OutRangeTime { get => _outRangeTime; set => SetProperty(ref _outRangeTime, value); } private int loginMode = Convert.ToInt32(ConfigurationManager.AppSettings["loginMode"]?.ToString() ?? "1"); public bool MultiLogin { get => loginMode == 2; } private PremissionDm? _selectedMenu; private PremissionDm? _selectedChildMenu; private List? _premissionDmList; public PremissionDm? SelectedChildMenu { get { return _selectedChildMenu; } set { //if (!_portUtil.Operate) //{ // if (value != null) // { // if (value.PremissionPath.Equals("TakeRecordWindow")) // { // //定义传参变量 // NavigationParameters keys = new NavigationParameters(); // //添加参数,键值对格式 // keys.Add("Type", 2); // _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys); // } // else if (value.PremissionPath.Equals("AddRecordWindow")) // { // //定义传参变量 // NavigationParameters keys = new NavigationParameters(); // //添加参数,键值对格式 // keys.Add("Type", 1); // _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys); // } // else if (value.PremissionPath.Equals("ReturnRecordWindow")) // { // //定义传参变量 // NavigationParameters keys = new NavigationParameters(); // //添加参数,键值对格式 // keys.Add("Type", 3); // _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys); // } // else if (value.PremissionPath.Equals("RetrunEmptyRecordWindow")) // { // //定义传参变量 // NavigationParameters keys = new NavigationParameters(); // //添加参数,键值对格式 // keys.Add("Type", 3); // _regionManager.RequestNavigate("ContentRegion", value.PremissionPath, keys); // } // else if (value.PremissionPath.Equals("CheckRecordWindow")) // { // //定义传参变量 // NavigationParameters keys = new NavigationParameters(); // //添加参数,键值对格式 // keys.Add("Type", 4); // _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys); // } // else // { // if (value.PremissionPath.Equals("ReturnDrugWindow") || value.PremissionPath.Equals("ReturnDrugWindow2")) // { // if (ConfigurationManager.AppSettings["returnDrugMode"].ToString().Equals("1")) // { // _regionManager.RequestNavigate("ContentRegion", "ReturnDrugWindow2"); // } // else // { // _regionManager.RequestNavigate("ContentRegion", "ReturnDrugWindow"); // } // } // else if (value.PremissionPath.Equals("SettingMainWindow") || value.PremissionPath.Equals("SettingWindow")) // { // //if (Convert.ToInt32(ConfigurationManager.AppSettings["hasFridge"])>0) // //{ // // _regionManager.RequestNavigate("ContentRegion", "SettingMainWindow"); // //} // //else // { // _regionManager.RequestNavigate("ContentRegion", "SettingWindow"); // } // } // else // { // _regionManager.RequestNavigate("ContentRegion", value.PremissionPath); // } // } // } SetProperty(ref _selectedChildMenu, value); //} } } public PremissionDm? SelectedMenu { get { return _selectedMenu; } set { //if (value != null) //{ // if (value.PremissionName == "退出") // { // logger.Info($"用户【{Operator?.Nickname}】退出登录"); // Operator = null; // Reviewer = null; // _regionManager.RequestNavigate("MainRegion", "LoginWindow"); // } // else // { // SelectedChildMenu = value.Children[0]; // } //} SetProperty(ref _selectedMenu, value); } } PremissionDm? PreSelectedMenu; #region 父菜单点击事件 #endregion private DelegateCommand _selectionCommon; public DelegateCommand SelectionCommon { get => _selectionCommon ?? (_selectionCommon = new DelegateCommand(SelectionMethod)); } private void SelectionMethod() { if (SelectedMenu != null && SelectedMenu.PremissionName != "退出") { PreSelectedMenu = SelectedMenu; } if (_portUtil.Operate) { if (PreSelectedMenu != null) { SelectedMenu = PreSelectedMenu; } } //SelectedMenu = viewName.SelectedItem as PremissionDm; //if (SelectedMenu.PremissionName == "退出") //{ // _chkFunction.HIKStopDVRRecord(); // logger.Info($"用户【{Operator?.Nickname}】退出登录"); // Operator = null; // Reviewer = null; // _regionManager.RequestNavigate("MainRegion", "LoginWindow"); //} //else //{ // //SelectedMenu.Children = SelectedMenu.Children; // SelectedChildMenu = SelectedMenu.Children[0]; //} logger.Info("开始进入父菜单"); if (SelectedMenu != null && SelectedMenu.PremissionName == "退出" && !_portUtil.Operate) { logger.Info($"用户【{Operator?.Nickname}】退出登录"); Operator = null; Reviewer = null; _regionManager.RequestNavigate("MainRegion", "LoginWindow"); } else { if (!_portUtil.Operate) { _regionManager.RequestNavigate("ContentRegion", SelectedMenu.Children[0].PremissionPath); } } logger.Info("结束父菜单"); } #region private DelegateCommand _selectionChildCommon; public DelegateCommand SelectionChildCommon { get => _selectionChildCommon ?? (_selectionChildCommon = new DelegateCommand(SelectionChildMethod)); } private void SelectionChildMethod() { SelectChildNavigate(SelectedChildMenu); } private void SelectChildNavigate(PremissionDm SelectedChildMenu) { if (!_portUtil.Operate) { if (SelectedChildMenu != null) { if (SelectedChildMenu.PremissionPath.Equals("TakeRecordWindow")) { //定义传参变量 NavigationParameters keys = new NavigationParameters(); //添加参数,键值对格式 keys.Add("Type", 2); _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys); } else if (SelectedChildMenu.PremissionPath.Equals("AddRecordWindow")) { //定义传参变量 NavigationParameters keys = new NavigationParameters(); //添加参数,键值对格式 keys.Add("Type", 1); _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys); } else if (SelectedChildMenu.PremissionPath.Equals("ReturnRecordWindow")) { //定义传参变量 NavigationParameters keys = new NavigationParameters(); //添加参数,键值对格式 keys.Add("Type", 3); _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys); } else if (SelectedChildMenu.PremissionPath.Equals("RetrunEmptyRecordWindow")) { //定义传参变量 NavigationParameters keys = new NavigationParameters(); //添加参数,键值对格式 keys.Add("Type", 3); _regionManager.RequestNavigate("ContentRegion", SelectedChildMenu.PremissionPath, keys); } else if (SelectedChildMenu.PremissionPath.Equals("CheckRecordWindow")) { //定义传参变量 NavigationParameters keys = new NavigationParameters(); //添加参数,键值对格式 keys.Add("Type", 4); _regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys); } else { if (SelectedChildMenu.PremissionPath.Equals("ReturnDrugWindow") || SelectedChildMenu.PremissionPath.Equals("ReturnDrugWindow2")) { if (ConfigurationManager.AppSettings["returnDrugMode"].ToString().Equals("1")) { _regionManager.RequestNavigate("ContentRegion", "ReturnDrugWindow2"); } else { _regionManager.RequestNavigate("ContentRegion", "ReturnDrugWindow"); } } //else if (SelectedChildMenu.PremissionPath.Equals("SettingMainWindow") || SelectedChildMenu.PremissionPath.Equals("SettingWindow")) //{ // if (Convert.ToInt32(ConfigurationManager.AppSettings["hasFridge"]) > 0) // { // _regionManager.RequestNavigate("ContentRegion", "SettingMainWindow"); // } // else // { // _regionManager.RequestNavigate("ContentRegion", "SettingWindow"); // } //} else { _regionManager.RequestNavigate("ContentRegion", SelectedChildMenu.PremissionPath); } } } } } #endregion public List PremissionDmList { get { return _premissionDmList; } set { SetProperty(ref _premissionDmList, value); } } public UserList UserList { get { return _userList; } set { SetProperty(ref _userList, value); } } public UserList UserList2 { get { return _userList2; } set { SetProperty(ref _userList2, value); } } public static UserList? Operator; public static UserList? Reviewer; IRegionManager _regionManager; IUnityContainer _container; private bool _is16Drawer; public bool Is16Drawer { get => _is16Drawer; set => SetProperty(ref _is16Drawer, value); } public bool KeepAlive => false; private PortUtil _portUtil; //private CHKFunction _chkFunction; IEventAggregator _eventAggregator; bool IsLeave = false; public HomeWindowViewModel(IRegionManager iRegionManager, PortUtil portUtil, IDialogService dialogService, IUnityContainer container, IEventAggregator eventAggregator) { _portUtil = portUtil; _regionManager = iRegionManager; _dialogService = dialogService; _container = container; this._eventAggregator = eventAggregator; //_chkFunction = cHKFunction; } public DelegateCommand OpenFingerDialog { get => new DelegateCommand((string Type) => { DialogParameters dialogParameters = new DialogParameters(); dialogParameters.Add("User", Type.Equals("Operator") ? Operator : Reviewer); DialogServiceExtensions.ShowDialogHost(_dialogService, "FingerprintDialog", dialogParameters, DoDialogResult, "RootDialog"); }); } public DelegateCommand OpenRecoverCommand { get => new DelegateCommand(async () => { try { _portUtil.WindowName = "HomeWindow"; _portUtil.Operate = true; await _portUtil.OpenStorage(); _portUtil.ResetData(); } catch (Exception ex) { logger.Info($"OpenRecoverCommand异常{ex.Message}"); } }); } public DelegateCommand OpenEditPasswordDialog { get => new DelegateCommand((string Type) => { DialogParameters dialogParameters = new DialogParameters(); dialogParameters.Add("EditPass", true); dialogParameters.Add("User", Type.Equals("Operator") ? Operator : Reviewer); DialogServiceExtensions.ShowDialogHost(_dialogService, "EditUserDialog", dialogParameters, DoDialogResult, "RootDialog"); }); } private void DoDialogResult(IDialogResult dialogResult) { // 委托 被动执行 被子窗口执行 // dialogResult 第一方面可以拿到任意参数 第二方面 可判断关闭状态 if (dialogResult.Result == ButtonResult.OK) { } } public void FindDrawerCount() { int count = 0; if (ConfigurationManager.AppSettings["MultiBatch"].ToString().Equals("1")) { count = SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType != 3) .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count(); } else { count = SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType != 3) .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count(); } Is16Drawer = count == 16; } /// /// 获取温度信息 /// private async void GetWD(object sender, ElapsedEventArgs e) { if (!_portUtil.FridgeOperate) { string retStr = string.Empty; byte[] data = null; float retT = await _portUtil.GetFridgeTemperature(1); Thread.Sleep(80); WD = $"恒温冷藏抽屉当前温度:{Math.Round((retT), 2)}℃"; } } private async void GetWD() { if (!_portUtil.FridgeOperate && FridgeState.Equals("0")) { string retStr = string.Empty; byte[] data = null; float retT = await _portUtil.GetFridgeTemperature(1); Thread.Sleep(80); WD = $"恒温冷藏抽屉当前温度:{Math.Round((retT), 2)}℃"; logger.Info(WD); //if (Convert.ToInt32(ConfigurationManager.AppSettings["hasFridge"]) > 1) //{ // float retTemp = await _portUtil.GetFridgeTemperature(2); // Thread.Sleep(80); // WD += $"{retTemp}℃"; //} } else { AlertMsg alertMsg = new AlertMsg { Message = $"正在获取冰箱温度或已关闭冰箱制冷功能!!!", Type = MsgType.ERROR }; _eventAggregator.GetEvent().Publish(alertMsg); } } /// /// 将收到的返回转换成具体温度数值 /// /// /// public string GetResultWD(string receiveData) { try { //string newStrWD = receiveData.Substring(10, 4); //logger.Info($"截取后数据newStrWD:{newStrWD}"); int iWD = Convert.ToInt32(receiveData, 16); logger.Info($"截取后数据iWD:{iWD}"); float fWD = 0; if (iWD != 0) { fWD = iWD * 1.0f / 10; } logger.Info($"截取后数据fWD:{fWD}"); string strRet = $"恒温冷藏抽屉当前温度:{fWD}℃;"; return strRet; } catch (Exception ex) { logger.Info("GetResultWD异常", new Exception($"{ex.ToString()}")); } return "数据异常"; } /// /// 查看冰箱温度 /// public DelegateCommand CheckWDCommand { get => new DelegateCommand(CheckAction); } private void CheckAction() { GetWD(); } //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作 public void ConfirmNavigationRequest(NavigationContext navigationContext, Action continuationCallback) { continuationCallback(true); } //接收导航传过来的参数 public void OnNavigatedTo(NavigationContext navigationContext) { _portUtil.dateTime = DateTime.Now; //取出user UserList = navigationContext.Parameters.GetValue("operator"); Operator = UserList; logger.Info($"发药人【{Operator.Nickname}】登录"); if (navigationContext.Parameters.ContainsKey("reviewer")) { UserList2 = navigationContext.Parameters.GetValue("reviewer"); Reviewer = UserList2; logger.Info($"审核人【{Reviewer.Nickname}】登录"); } List premissions = UserList.Role.Permissions; if (premissions.Count <= 0) { Operator = null; Reviewer = null; Application.Current.Dispatcher.Invoke(() => { _regionManager.RequestNavigate("MainRegion", "LoginWindow"); }); AlertMsg alertMsg = new AlertMsg { Message = $"用户{UserList.Nickname}或还未设置权限,请联系管理员", Type = MsgType.ERROR }; _eventAggregator.GetEvent().Publish(alertMsg); return; } //SqlSugarHelper.Db.SqlQueryable(sql) //.ToTree(pd => pd.Children, pd => pd.ParentId, 0); PremissionDmList = premissions; SelectedMenu = premissions[0]; PreSelectedMenu = premissions[0]; SelectedChildMenu = premissions[0].Children[0]; _regionManager.RequestNavigate("ContentRegion", premissions[0].Children[0].PremissionPath); FindDrawerCount(); int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0"); if (autoExit > 0) { //int interval = autoExit * 1000; new PromiseUtil().taskAsyncLoop(1000, 0, async (options, next, stop) => { try { if (!_portUtil.Operate) { // 无人操作鼠标键盘 if ((DateTime.Now - _portUtil.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit) { logger.Info($"设备{autoExit}内无人操作,用户【{Operator?.Nickname}】自动退出登录,_portUtil.Operate:{_portUtil.Operate},totalSecond:{(DateTime.Now - _portUtil.dateTime).TotalSeconds},lastInputTime:{CheckComputerFreeState.GetLastInputTime()},autoExit:{autoExit}"); Operator = null; Reviewer = null; //Application.Current.Dispatcher.Invoke(() => //{ stop(); System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => { DialogHost.Close("RootDialog"); _regionManager.RequestNavigate("MainRegion", "LoginWindow"); })); //}); //timer.Dispose(); } else { if (Operator == null) { stop(); } else { next(); } } } else { _portUtil.dateTime = DateTime.Now; next(); } } catch (Exception ex) { logger.Info($"自动退出异常:{ex.Message}"); } }); } //int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0"); //int stopRecord = Convert.ToInt32(ConfigurationManager.AppSettings["stopRecord"] ?? "0"); //if (autoExit > 0) //{ // System.Timers.Timer timer = new System.Timers.Timer(); // timer.Interval = 1000; // timer.Elapsed += (sender, e) => // { // // 串口无人操作 // if (!_portUtil.Operate) // { // // 30秒内无人操作鼠标键盘 // if ((DateTime.Now - _portUtil.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit) // { // logger.Info($"设备30秒内无人操作,用户【{Operator?.Nickname}】自动退出登录,_portUtil.Operate:{_portUtil.Operate},totalSecond:{(DateTime.Now - _portUtil.dateTime).TotalSeconds},lastInputTime:{CheckComputerFreeState.GetLastInputTime()},autoExit:{autoExit}"); // //_chkFunction.HIKStopDVRRecord(); // Operator = null; // Reviewer = null; // Application.Current.Dispatcher.Invoke(() => // { // _regionManager.RequestNavigate("MainRegion", "LoginWindow"); // timer.Stop(); // }); // } // } // }; // timer.Start(); //} //#region 温度查询定时 //int interval = Convert.ToInt32(ConfigurationManager.AppSettings["Interval"]); //if (interval > 0) //{ // WDTimer = new System.Timers.Timer(); // WDTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetWD); // WDTimer.Interval = interval; // //WDTimer.Start(); // //WDTimer.AutoReset = true; // //WDTimer.Enabled = true; //} //#endregion //GetWD(); //if (stopRecord > 0) //{ // System.Timers.Timer timer = new System.Timers.Timer(); // timer.Interval = 1000; // timer.Elapsed += (sender, e) => // { // //指定时间内无人操作鼠标键盘则停止录像 // if (!_portUtil.Operate && CheckComputerFreeState.GetLastInputTime() > stopRecord) // { // _chkFunction.HIKStopDVRRecord(); // } // }; // timer.Start(); //} //logger.Info($"当前时间:{DateTime.Now}\r\n获取录像机的时间"); ////获取录像机的时间 //_chkFunction.HIK_DVR_TIME(); //_chkFunction.HIKStartDVRRecord(); GetFridgeTemperature(); _eventAggregator.GetEvent().Subscribe(GetFridgeTemperature); } //获取冰箱温度定时 private void GetFridgeTemperature() { string[] tempRange = TemperatureRange.Split('-'); new PromiseUtil().taskAsyncLoop(10000, 0, async (options, next, stop) => { try { FridgeState = CommonClass.ReadAppSetting("FridgeState"); if (!_portUtil.FridgeOperate && FridgeState.Equals("0")) { string retStr = string.Empty; byte[] data = null; float retT = await _portUtil.GetFridgeTemperature(1); Thread.Sleep(80); WD = $"恒温冷藏抽屉当前温度:{Math.Round((retT), 2)}℃;"; AlertColor = Brushes.White; logger.Info(WD); if (tempRange != null && tempRange.Count() >= 2) { if (retT < Convert.ToSingle(tempRange[0]) || retT > Convert.ToSingle(tempRange[1])) { //查询制冷片温度 float retT2 = await _portUtil.GetFridgeTemperature2(); if (retT2 > 65) { if (!FridgeState.Equals("1")) { //停掉冰箱 await _portUtil.FridgeOff(1); CommonClass.SaveAppSetting("FridgeState", "1"); //AlertMsg alertMsg = new AlertMsg //{ // Message = $"冰箱制冷片温度超过65度,已关闭冰箱制冷功能!!!", // Type = MsgType.ERROR //}; //_eventAggregator.GetEvent().Publish(alertMsg); System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => { DialogParameters dialogParameters = new DialogParameters(); dialogParameters.Add("warnMessage", "冰箱制冷片温度超过65度,已关闭冰箱制冷功能!!!"); DialogServiceExtensions.ShowDialogHost(_dialogService, "WarnDialog", dialogParameters, DoDialogResult, "RootDialog"); })); } logger.Info($"制冷片温度超过65度"); Thread.Sleep(100); //给出提示 WD += "冰箱温度异常,已关闭冰箱制冷功能"; AlertColor = Brushes.Red; FridgeTime = null; stop(); } else { if (FridgeTime == null) { FridgeTime = DateTime.Now; //温度不在范围,但没有超过时间 if (IsLeave) { FridgeTime = null; stop(); } else { next(); } } else { if ((DateTime.Now - FridgeTime.Value).TotalMinutes > Convert.ToInt32(OutRangeTime)) { logger.Info($"冰箱温度不在范围内,超过{OutRangeTime}分钟"); //停掉冰箱 await _portUtil.FridgeOff(1); Thread.Sleep(100); CommonClass.SaveAppSetting("FridgeState", "0"); //给出提示 WD += "冰箱温度异常,已关闭冰箱制冷功能;"; AlertColor = Brushes.Red; FridgeState = "1"; CommonClass.SaveAppSetting("FridgeState", "1"); //AlertMsg alertMsg = new AlertMsg //{ // Message = $"冰箱温度异常,已关闭冰箱制冷功能!!!", // Type = MsgType.ERROR //}; //_eventAggregator.GetEvent().Publish(alertMsg); System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => { DialogParameters dialogParameters = new DialogParameters(); dialogParameters.Add("warnMessage", "冰箱温度异常,已关闭冰箱制冷功能!!!"); DialogServiceExtensions.ShowDialogHost(_dialogService, "WarnDialog", dialogParameters, DoDialogResult, "RootDialog"); })); FridgeTime = null; stop(); } else { //温度不在范围,但没有超过时间 if (IsLeave) { FridgeTime = null; stop(); } else { next(); } } } } } else { if (IsLeave) { FridgeTime = null; stop(); } else { next(); } } } else { logger.Info($"获取冰箱温度范围有误{TemperatureRange}"); //if (Convert.ToInt32(ConfigurationManager.AppSettings["hasFridge"]) > 1) //{ // float retTemp = await _portUtil.GetFridgeTemperature(2); // Thread.Sleep(80); // WD += $"{retTemp}℃"; //} if (IsLeave) { FridgeTime = null; stop(); } else { next(); } } } else { WD = $"恒温冷藏抽屉串口关闭或冰箱制冷异常制冷关闭!!!"; AlertColor = Brushes.Red; FridgeTime = null; stop(); } } catch (Exception ex) { logger.Info($"获取冰箱异常:{ex.Message}"); next(); } }); } //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建 public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } //这个方法用于拦截请求 public void OnNavigatedFrom(NavigationContext navigationContext) { IsLeave = true; navigationContext.NavigationService.Region.RegionManager.Regions.Remove(PrismManager.SettingViewRegionName); _eventAggregator.GetEvent().Unsubscribe(GetFridgeTemperature); } } }