更新自动退出相关代码
This commit is contained in:
parent
ed6c98aa3b
commit
33cbdb530e
|
|
@ -37,7 +37,7 @@
|
||||||
<!-- 按处方还药或者按取药记录还药 1:处方(ReturnDrugWindow2)2:药品(ReturnDrugWindow)-->
|
<!-- 按处方还药或者按取药记录还药 1:处方(ReturnDrugWindow2)2:药品(ReturnDrugWindow)-->
|
||||||
<add key="returnDrugMode" value="2" />
|
<add key="returnDrugMode" value="2" />
|
||||||
<!-- 自动退出时间,单位秒,为0时不自动退出 -->
|
<!-- 自动退出时间,单位秒,为0时不自动退出 -->
|
||||||
<add key="autoExit" value="0"/>
|
<add key="autoExit" value="10"/>
|
||||||
|
|
||||||
<!-- 无操作退出录像时间,单位秒,为0时不退出录像 -->
|
<!-- 无操作退出录像时间,单位秒,为0时不退出录像 -->
|
||||||
<add key="stopRecord" value="0"/>
|
<add key="stopRecord" value="0"/>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,13 @@
|
||||||
using log4net;
|
using DM_Weight.Common;
|
||||||
|
using DM_Weight.Models;
|
||||||
|
using DM_Weight.msg;
|
||||||
|
using DM_Weight.Port;
|
||||||
|
using DM_Weight.util;
|
||||||
|
using DM_Weight.Views;
|
||||||
|
using log4net;
|
||||||
|
using log4net.Repository.Hierarchy;
|
||||||
|
using MaterialDesignThemes.Wpf;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using Prism.Commands;
|
using Prism.Commands;
|
||||||
using Prism.Events;
|
using Prism.Events;
|
||||||
using Prism.Mvvm;
|
using Prism.Mvvm;
|
||||||
|
|
@ -10,22 +19,14 @@ using System.Collections.Generic;
|
||||||
using System.Configuration;
|
using System.Configuration;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Timers;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
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 System.Windows.Media;
|
||||||
using MaterialDesignThemes.Wpf;
|
using System.Windows.Threading;
|
||||||
|
using Unity;
|
||||||
|
|
||||||
namespace DM_Weight.ViewModels
|
namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
|
|
@ -571,8 +572,9 @@ namespace DM_Weight.ViewModels
|
||||||
int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
|
int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
|
||||||
if (autoExit > 0)
|
if (autoExit > 0)
|
||||||
{
|
{
|
||||||
|
logger.Info("启动自动退出检测");
|
||||||
//int interval = autoExit * 1000;
|
//int interval = autoExit * 1000;
|
||||||
new PromiseUtil<int>().taskAsyncLoop(1000, 0, async (options, next, stop) =>
|
new PromiseUtil<int>().taskAsyncLoop(10, 0, async (options, next, stop) =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -590,8 +592,10 @@ namespace DM_Weight.ViewModels
|
||||||
stop();
|
stop();
|
||||||
System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
|
System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
|
||||||
{
|
{
|
||||||
|
if (DialogHost.IsDialogOpen("RootDialog"))
|
||||||
DialogHost.Close("RootDialog");
|
{
|
||||||
|
DialogHost.Close("RootDialog");
|
||||||
|
}
|
||||||
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
|
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
|
||||||
}));
|
}));
|
||||||
//});
|
//});
|
||||||
|
|
@ -601,10 +605,12 @@ namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
if (Operator == null)
|
if (Operator == null)
|
||||||
{
|
{
|
||||||
|
logger.Info("自动退出检测已停止");
|
||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
logger.Info($"停止操作时间{_portUtil.dateTime},自动退出时间{autoExit},运算结果{(DateTime.Now - _portUtil.dateTime).TotalSeconds},用户上次使用系统到现在的时间间隔{CheckComputerFreeState.GetLastInputTime()}");
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,23 @@ namespace DM_Weight.util
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var count = (Environment.TickCount & Int32.MaxValue) - (long)vLastInputInfo.dwTime;
|
//var count = (Environment.TickCount & Int32.MaxValue) - (long)vLastInputInfo.dwTime;
|
||||||
var icount = count / 1000;
|
//var icount = count / 1000;
|
||||||
return icount;
|
//return icount;
|
||||||
|
|
||||||
|
// 使用 64 位 TickCount 避免回绕问题
|
||||||
|
long currentTick = Environment.TickCount64;
|
||||||
|
long lastInputTick = vLastInputInfo.dwTime;
|
||||||
|
|
||||||
|
// 处理可能的回绕(虽然使用 64 位后极不可能发生)
|
||||||
|
if (currentTick < lastInputTick)
|
||||||
|
{
|
||||||
|
// 发生了回绕,调整计算
|
||||||
|
lastInputTick -= uint.MaxValue + 1L;
|
||||||
|
}
|
||||||
|
|
||||||
|
long elapsedMilliseconds = currentTick - lastInputTick;
|
||||||
|
return Math.Max(0, elapsedMilliseconds / 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue