From 8a8168d15a24d11f2aaefc6676a0fba71bbfad64 Mon Sep 17 00:00:00 2001 From: EmilyEdna <847432003@qq.com> Date: Thu, 8 Sep 2022 11:45:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E5=8D=A1=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HKCardIN/HKCardIN.csproj | 7 + HKCardIN/HKResouces/背景.jpg | Bin 0 -> 92768 bytes HKCardIN/Helper/DataBus.cs | 13 + HKCardIN/Helper/HKHelper.cs | 31 ++ HKCardIN/Helper/ThreadManage.cs | 445 +++++++++++++++++++++++++++ HKCardIN/ViewModels/RootViewModel.cs | 30 +- HKCardIN/Views/RootView.xaml | 39 ++- HKCardOUT/Bootstrapper.cs | 63 ++++ 8 files changed, 615 insertions(+), 13 deletions(-) create mode 100644 HKCardIN/HKResouces/背景.jpg create mode 100644 HKCardIN/Helper/DataBus.cs create mode 100644 HKCardIN/Helper/HKHelper.cs create mode 100644 HKCardIN/Helper/ThreadManage.cs diff --git a/HKCardIN/HKCardIN.csproj b/HKCardIN/HKCardIN.csproj index b789c4e..11d37fb 100644 --- a/HKCardIN/HKCardIN.csproj +++ b/HKCardIN/HKCardIN.csproj @@ -20,12 +20,19 @@ + + + + + + + diff --git a/HKCardIN/HKResouces/背景.jpg b/HKCardIN/HKResouces/背景.jpg new file mode 100644 index 0000000000000000000000000000000000000000..79dfc0488c83ed162b9b7b67ef06013bb4e745b4 GIT binary patch literal 92768 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 + { + ///

+ /// 判断网络状况的方法,返回值true为连接,false为未连接 + /// + /// + /// + /// + [DllImport("wininet")] + public extern static bool InternetGetConnectedState(out int conState, int reder); + /// + /// 获取当前网络连接状态 + /// + /// 成功连接网络返回 true,未连接返回 false + public bool GetNetworkState() + { + return InternetGetConnectedState(out int i, 0); + } + + } + } diff --git a/HKCardIN/Helper/ThreadManage.cs b/HKCardIN/Helper/ThreadManage.cs new file mode 100644 index 0000000..c389a3f --- /dev/null +++ b/HKCardIN/Helper/ThreadManage.cs @@ -0,0 +1,445 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace HKCardIN.Helper +{ + public class Singleton where T : new() + { + private static object _async = new object(); + + private static T _instance; + + static readonly Lazy instance = new(); + /// + /// 获取实例 + /// + /// + public static T GetInstance() + { + return instance.Value; + } + } + public class ThreadManage : Singleton + { + string guid = "871d7e28-c413-4675-8d28-64e4dca4c2d3-"; + private static readonly object _lock = new object(); + StringBuilder callbackKey = new StringBuilder(); + List keys = new List(); + ConcurrentDictionary Threads = new ConcurrentDictionary(); + ConcurrentDictionary CancellationTokenSources = new ConcurrentDictionary(); + + /// + /// 停止指定任务 + /// + /// 任务名 + /// 任务结束的回调 + public void StopTask(string key, Action ExitCallback = null) + { + if (CancellationTokenSources.ContainsKey(guid + key)) + { + CancellationTokenSources[guid + key]?.Cancel(); + ActionManage.GetInstance.Register(ExitCallback, guid + key); + } + else + { + if (ExitCallback != null) ExitCallback(); + } + } + + /// + /// 长任务,带 while true 的循环 + /// + /// + /// + public void StartLong(Action action, string key, bool IsRestart = false, Action RunComplete = null) + { + CancellationTokenSources.TryAdd(guid + key, new CancellationTokenSource()); + bool result = Threads.TryAdd(guid + key, Task.Factory.StartNew(new Action(() => + { + Thread.CurrentThread.Name = key; + ReStart: + try + { + while (!CancellationTokenSources[guid + key].IsCancellationRequested) + { + if (action != null) action(); + } + } + catch (Exception ex) + { + if (IsRestart) + { + Thread.Sleep(2000); + goto ReStart; + } + else + { + CancellationTokenSources.TryRemove(guid + key, out CancellationTokenSource temp); + Threads.TryRemove(guid + key, out Task temp1); + } + } + }), CancellationTokenSources[guid + key].Token).ContinueWith(new Action((t, o) => + { + ThreadStatus(t, o.ToString()); + if (RunComplete != null) RunComplete(); + }), guid + key)); + } + + + /// + /// 不带 while true 的循环任务 + /// + /// + /// + public void Start(Action action, string key, bool isRestart = false) + { + CancellationTokenSources.TryAdd(guid + key, new CancellationTokenSource()); + bool result = Threads.TryAdd(guid + key, Task.Factory.StartNew(new Action(() => + { + Thread.CurrentThread.Name = key; + try + { + if (action != null) action(); + } + catch (Exception ex) + { + if (isRestart) + { + CancellationTokenSources.TryRemove(guid + key, out CancellationTokenSource item1); + Threads.TryRemove(guid + key, out Task item2); + Start(action, key, isRestart); + } + else + { + } + } + }), CancellationTokenSources[guid + key].Token).ContinueWith(new Action((t, o) => + { + ThreadStatus(t, o.ToString()); + }), guid + key)); + } + + private void ThreadStatus(Task task, string key) + { + bool IsRemove = false; + string name = key.Substring(key.LastIndexOf('-') + 1); + switch (task.Status) + { + case TaskStatus.RanToCompletion: + IsRemove = true; + break; + case TaskStatus.Faulted: + IsRemove = true; + break; + case TaskStatus.Canceled: + IsRemove = true; + break; + default: + break; + } + + if (IsRemove) + { + if (Threads.ContainsKey(key)) + Threads.TryRemove(key, out Task t); + if (CancellationTokenSources.ContainsKey(key)) + CancellationTokenSources.TryRemove(key, out CancellationTokenSource cts); + ActionManage.GetInstance.Send(key); + } + } + + /// + /// 释放所有线程资源 + /// + public void Dispose() + { + for (int i = 0; i < CancellationTokenSources.Count; i++) + { + CancellationTokenSources.ElementAt(i).Value.Cancel(); + } + } + + /// + /// 判断指定线程是否完成 + /// + /// + /// + public bool IsComplete(string key) + { + if (Threads.ContainsKey(guid + key)) return Threads[guid + key].IsCompleted; + return false; + } + + } + internal class Delegation + { + /// + /// 带参数的委托 + /// + public Action ActionPar { get; set; } + /// + /// 带参数的委托 + /// + public Action ActionPars { get; set; } + /// + /// 无参数的委托 + /// + public Action ActionBus { get; set; } + /// + /// 有返回值的委托 + /// + public Func FuncObj { get; set; } + /// + /// 有返回值,有参数的委托 + /// + public Func FuncPar { get; set; } + } + public class ActionManage + { + + private volatile static ActionManage _Instance; + public static ActionManage GetInstance => _Instance ?? (_Instance = new ActionManage()); + private ActionManage() { } + + //private static ConcurrentDictionary actions = new ConcurrentDictionary(); + private static ConcurrentDictionary actions = new ConcurrentDictionary(); + + static readonly object SendLock = new object(); + static readonly object SendParLock = new object(); + static readonly object RegisterLock = new object(); + + /// + /// 注销委托 + /// + /// + public void CancelRegister(string key) + { + if (actions.ContainsKey(key)) + actions.TryRemove(key, out Delegation t); + } + + /// + /// 执行注册过的委托 + /// + /// 注册委托的key + /// 委托参数 + /// 委托回调 + public void Send(string key, object par, Action Callback = null) + { + lock (SendLock) + if (actions.ContainsKey(key)) actions[key].ActionPar.Invoke(par, Callback); + } + + /// + /// 执行注册过的委托 + /// + /// 注册委托的key + /// 委托参数 + /// 委托回调 + public void Send(string key, object[] par, Action Callback = null) + { + lock (SendLock) + if (actions.ContainsKey(key)) actions[key].ActionPars.Invokes(par, Callback); + } + + /// + /// 执行注册过的委托 + /// + /// 注册委托的key + /// 委托回调 + public void Send(string key, Action Callback = null) + { + lock (SendLock) + if (actions.ContainsKey(key)) actions[key].ActionBus?.Invoke(Callback); + } + + public object SendResult(string key, object par = null) + { + lock (SendLock) + if (actions.ContainsKey(key)) + if (par == null) + { + return actions[key].FuncObj?.Invoke(); + } + else + { + return actions[key].FuncPar?.Invoke(par); + } + return default; + } + + public void Register(T action, string key) + { + lock (RegisterLock) + { + if (action != null) + { + if (!actions.ContainsKey(key)) + { + if (action is Action actionBus) + actions.TryAdd(key, new Delegation() { ActionBus = actionBus }); + + if (action is Action actionObj) + actions.TryAdd(key, new Delegation() { ActionPar = actionObj }); + + if (action is Action actionObjs) + actions.TryAdd(key, new Delegation() { ActionPars = actionObjs }); + + if (action is Func funcObj) + actions.TryAdd(key, new Delegation() { FuncObj = funcObj }); + + if (action is Func puncPar) + actions.TryAdd(key, new Delegation() { FuncPar = puncPar }); + } + } + } + + } + + } + public static class ExpandMethod + { + /// + /// 获取布尔数组指定值得索引 + /// + /// 要获取索引的数组 + /// 要获取索引的值 + /// + public static int GetIndex(this bool[] obj, bool value) + { + if (obj == null) return -1; + return Array.FindIndex(obj, p => p == value); + } + + /// + /// 获取字符串数组指定值得索引 + /// + /// 要获取索引的数组 + /// 要获取索引的值 + /// + public static int GetIndex(this string[] obj, string value) + { + if (obj == null || value == null) return -1; + return Array.FindIndex(obj, p => p == value && p.Length > 0); + } + + /// + /// 委托回调 + /// + /// 要执行的委托 + /// 委托回调 + public static void Invoke(this Action action, Action callback) + { + action?.Invoke(); + callback?.Invoke(); + } + + /// + /// 委托回调 + /// + /// 要执行的委托 + /// 要执行的委托的参数 + /// 委托回调 + public static void Invoke(this Action action, object par, Action callback) + { + action?.Invoke(par); + callback?.Invoke(); + } + + public static void Invokes(this Action action, object[] par, Action callback) + { + action?.Invoke(par); + callback?.Invoke(); + } + + + /// + /// 字节数组转换成32位整数 + /// + /// + /// + public static int BytesToInt(this byte[] bytes) + { + if (bytes.Length > 4) return -1; + int ReturnVlaue = 0; + for (int i = 0; i < bytes.Length; i++) + { + ReturnVlaue += (int)(bytes[i] << (i * 8)); + } + return ReturnVlaue; + } + + /// + /// 字节数组转换成 ushort 数组 + /// + /// 要转换的字节数组 + /// 字节高度顺序控制 + /// + public static ushort[] BytesToUshorts(this byte[] bytes, bool reverse = false) + { + int len = bytes.Length; + + byte[] srcPlus = new byte[len + 1]; + bytes.CopyTo(srcPlus, 0); + int count = len >> 1; + + if (len % 2 != 0) + { + count += 1; + } + + ushort[] dest = new ushort[count]; + if (reverse) + { + for (int i = 0; i < count; i++) + { + dest[i] = (ushort)(srcPlus[i * 2] << 8 | srcPlus[2 * i + 1] & 0xff); + } + } + else + { + for (int i = 0; i < count; i++) + { + dest[i] = (ushort)(srcPlus[i * 2] & 0xff | srcPlus[2 * i + 1] << 8); + } + } + + return dest; + } + + /// + /// ushort 数组转换成字节数组 + /// + /// 需要转换的 ushort数组 + /// 高低字节的设置 + /// + public static byte[] UshortsToBytes(this ushort[] src, bool reverse = false) + { + + int count = src.Length; + byte[] dest = new byte[count << 1]; + if (reverse) + { + for (int i = 0; i < count; i++) + { + dest[i * 2] = (byte)(src[i] >> 8); + dest[i * 2 + 1] = (byte)(src[i] >> 0); + } + } + else + { + for (int i = 0; i < count; i++) + { + dest[i * 2] = (byte)(src[i] >> 0); + dest[i * 2 + 1] = (byte)(src[i] >> 8); + } + } + return dest; + } + } +} diff --git a/HKCardIN/ViewModels/RootViewModel.cs b/HKCardIN/ViewModels/RootViewModel.cs index 369c95a..d5f7df8 100644 --- a/HKCardIN/ViewModels/RootViewModel.cs +++ b/HKCardIN/ViewModels/RootViewModel.cs @@ -1,4 +1,7 @@ -using Stylet; +using HKCardIN.Helper; +using Stylet; +using System; +using System.Threading; using System.Windows; namespace HKCardIN.ViewModels @@ -11,6 +14,7 @@ namespace HKCardIN.ViewModels { CodeVisible = Visibility.Collapsed; ContentVisible = Visibility.Visible; + MainThread(); } #region 属性 @@ -82,5 +86,29 @@ namespace HKCardIN.ViewModels } #endregion + + #region 方法 + private void MainThread() { + ThreadManage.GetInstance().StartLong(new Action(() => + { + try + { + //1.检测网络上下线 + bool network = HKHelper.GetInstance().GetNetworkState(); + if (network != DataBus.NetWordState) + { + if (network) HandyControl.Controls.Growl.InfoGlobal("网络连接成功"); + else HandyControl.Controls.Growl.InfoGlobal("系统已离线,请连接网络!!!"); + DataBus.NetWordState = network; + } + Thread.Sleep(3000); + } + catch (Exception ex) + { + HandyControl.Controls.Growl.InfoGlobal(ex.Message); + } + }), "循环状态监测线程", false); + } + #endregion } } diff --git a/HKCardIN/Views/RootView.xaml b/HKCardIN/Views/RootView.xaml index 992e159..23287d1 100644 --- a/HKCardIN/Views/RootView.xaml +++ b/HKCardIN/Views/RootView.xaml @@ -37,7 +37,16 @@ + + + + + FontWeight="Bold" + Foreground="WhiteSmoke" /> - - + FontWeight="Bold" + Foreground="WhiteSmoke" /> + + @@ -268,7 +282,8 @@ + FontWeight="Bold" + Foreground="WhiteSmoke" />