diff --git a/ClientsLibrary/BasicSupport/NetClientOnline.cs b/ClientsLibrary/BasicSupport/NetClientOnline.cs index e0f6608..5943799 100644 --- a/ClientsLibrary/BasicSupport/NetClientOnline.cs +++ b/ClientsLibrary/BasicSupport/NetClientOnline.cs @@ -28,8 +28,17 @@ namespace ClientsLibrary.BasicSupport MyControls[i].Dispose(); MyControls.RemoveAt(i); } + + Location_Y = 0; } + /// + /// 清理掉所有的在线信息 + /// + public void ClearOnlineClients() + { + ClearControls(); + } public void ClientOnline(NetAccount account) { diff --git a/ClientsLibrary/UserClient.cs b/ClientsLibrary/UserClient.cs index 5be5b78..efe7644 100644 --- a/ClientsLibrary/UserClient.cs +++ b/ClientsLibrary/UserClient.cs @@ -36,7 +36,7 @@ namespace ClientsLibrary /// /// 本软件的当前版本,用来验证更新的关键依据 /// - public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.171011"); + public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.171013"); /// diff --git a/CommonLibrary/ProtocolSupport/CommonProtocol.cs b/CommonLibrary/ProtocolSupport/CommonProtocol.cs index 3b81e82..40c472c 100644 --- a/CommonLibrary/ProtocolSupport/CommonProtocol.cs +++ b/CommonLibrary/ProtocolSupport/CommonProtocol.cs @@ -45,7 +45,7 @@ namespace CommonLibrary * **************************************************************************/ - SoftBasic.FrameworkVersion = new SystemVersion("1.6.11"); + SoftBasic.FrameworkVersion = new SystemVersion("1.6.12"); } diff --git a/Public/HslCommunication.dll b/Public/HslCommunication.dll index de4da10..60a691d 100644 Binary files a/Public/HslCommunication.dll and b/Public/HslCommunication.dll differ diff --git a/Public/HslCommunication.xml b/Public/HslCommunication.xml index 808f879..69a88e7 100644 --- a/Public/HslCommunication.xml +++ b/Public/HslCommunication.xml @@ -2568,6 +2568,11 @@ 服务器的异常,启动,等等一般消息产生的时候,出发此事件 + + + 在客户端断开后并在重连服务器之前触发,用于清理系统资源 + + 当接收到文本数据的时候,触发此事件 diff --git a/软件系统客户端Wpf/MainWindow.xaml.cs b/软件系统客户端Wpf/MainWindow.xaml.cs index 3a5020b..40a5a33 100644 --- a/软件系统客户端Wpf/MainWindow.xaml.cs +++ b/软件系统客户端Wpf/MainWindow.xaml.cs @@ -23,7 +23,6 @@ using System.Threading; using 软件系统客户端Wpf.Views; using System.Windows.Media.Animation; using MaterialDesignThemes.Wpf; -using CommonLibrary; namespace 软件系统客户端Wpf { @@ -55,7 +54,7 @@ namespace 软件系统客户端Wpf /***************************************************************************************** * * 权限说明 在进行特定权限操作的业务逻辑时,应该提炼成一个角色,这样可以动态绑定带有这些功能的账户 - * 示例 if (UserClient.CheckUserAccountRole("审计员")) { dosomething(); }// 获取了审计员的角色,名字此处示例 + * 示例 if (UserClient.CheckUserAccountRole("[审计员的GUID码]")) { dosomething(); }// 获取了审计员的角色,名字此处示例 * ******************************************************************************************/ @@ -83,23 +82,24 @@ namespace 软件系统客户端Wpf private void Window_Activated(object sender, EventArgs e) { - //窗口激活就触发,不应把初始代码放这里 + // 窗口激活就触发,不应把初始代码放这里 } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { IsWindowShow = false; - //通知服务器退出网络服务 + // 通知服务器退出网络服务 net_socket_client.ClientClose(); + - //保存当前的颜色选择 + // 保存当前的颜色选择 var p = new PaletteHelper().QueryPalette(); using (StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + @"Palette.txt", false, Encoding.UTF8)) { sw.Write(JObject.FromObject(p).ToString()); } - //等待一秒退出 + // 等待一秒退出 using (FormWaitInfomation fwm = new FormWaitInfomation("正在退出程序...", 1000)) { fwm.ShowDialog(); @@ -183,6 +183,7 @@ namespace 软件系统客户端Wpf net_socket_client.LoginSuccess += Net_socket_client_LoginSuccess; net_socket_client.AcceptByte += Net_socket_client_AcceptByte; net_socket_client.AcceptString += Net_socket_client_AcceptString; + net_socket_client.BeforReConnected += Net_socket_client_BeforReConnected; TextBlock_Announcement.Text = UserClient.Announcement; @@ -195,6 +196,8 @@ namespace 软件系统客户端Wpf new PaletteHelper().SetLightDark(UserClient.JsonSettings.IsThemeDark); } + + private void AddStringRenderShow(string str) { var messageQueue = SoftSnackbar.MessageQueue; @@ -553,25 +556,36 @@ namespace 软件系统客户端Wpf private void Net_socket_client_AcceptByte(AsyncStateOne object1, NetHandle customer, byte[] object2) { - //接收到服务器发来的字节数据 + // 接收到服务器发来的字节数据 if (IsWindowShow) Dispatcher.Invoke(new Action(() => { MessageBox.Show(customer.ToString()); })); } + + private void Net_socket_client_LoginSuccess() { - //登录成功,或重新登录成功的事件,有些数据的初始化可以放在此处 + // 登录成功,或重新登录成功的事件,有些数据的初始化可以放在此处 if (IsWindowShow) Dispatcher.Invoke(new Action(() => { TextBlock_ClientStatus.Text = "客户端启动成功"; })); } + private void Net_socket_client_BeforReConnected() + { + // 和服务器断开,重新连接之前发生的事件,清理已加载资源使用,比如客户端在线信息 + if (IsWindowShow) Dispatcher.Invoke(new Action(() => + { + ClientsOnline.Children?.Clear(); + })); + } + private void Net_socket_client_LoginFailed(int object1) { - //登录失败的情况,如果连续三次连接失败,请考虑退出系统 + // 登录失败的情况,如果连续三次连接失败,请考虑退出系统 if (object1 > 3) { if (IsWindowShow) Dispatcher.Invoke(new Action(() => @@ -583,7 +597,7 @@ namespace 软件系统客户端Wpf private void Net_socket_client_MessageAlerts(string object1) { - //信息提示 + // 信息提示 if (IsWindowShow) Dispatcher.Invoke(new Action(() => { TextBlock_ClientStatus.Text = object1; diff --git a/软件系统客户端模版/FormMainWindow.cs b/软件系统客户端模版/FormMainWindow.cs index 5f32971..0ac9ba2 100644 --- a/软件系统客户端模版/FormMainWindow.cs +++ b/软件系统客户端模版/FormMainWindow.cs @@ -93,6 +93,7 @@ namespace 软件系统客户端模版 net_socket_client.LoginSuccess += Net_socket_client_LoginSuccess; net_socket_client.AcceptByte += Net_socket_client_AcceptByte; net_socket_client.AcceptString += Net_socket_client_AcceptString; + net_socket_client.BeforReConnected += Net_socket_client_BeforReConnected; // 显示公告 label_Announcement.Text = UserClient.Announcement; @@ -102,6 +103,8 @@ namespace 软件系统客户端模版 //初始化窗口 MainRenderInitialization(); } + + private void FormMainWindow_Shown(object sender, EventArgs e) { // 窗口显示 @@ -490,6 +493,17 @@ namespace 软件系统客户端模版 })); } + + private void Net_socket_client_BeforReConnected() + { + // 和服务器断开后,重新连接之前操作,清理在线信息 + if (IsHandleCreated && IsWindowShow) Invoke(new Action(() => + { + netClientOnline1.ClearOnlineClients(); + })); + } + + private void Net_socket_client_LoginFailed(int object1) { // 登录失败的情况,如果连续三次连接失败,请考虑退出系统