# AppHelper **Repository Path**: marques/app-helper ## Basic Information - **Project Name**: AppHelper - **Description**: 应用程序帮助类,集合单例运行,启动加载等待窗口,Log4Net日志记录 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2022-01-11 - **Last Updated**: 2022-01-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AppHelper #### 介绍 应用程序帮助类 1. 集合单例运行:保证应用程序只运行一个实例,避免多开 2. 启动加载等待窗口:应用程序加载可能需要加载时间较长时,显示加载等待窗口,提升用户体验。 3. Log4Net日志记录:集成日志功能,便于记录软件异常,有利于项目维护、DBUG #### 项目依赖 1. Log4Net类库 2. SunnyUI界面类库 #### 引用说明 1. 可以直接项目应用 AppHelper 2. 也可以单独对项目生产的DLL文件进应引用 > :green_heart: 多DLL文件引用 | 序号 | 文件名称 | 备注 | |----|------|----| | 1 | AppHelper.dll | AppHelper类库主文件 | | 2 | log4net.dll | log4net依赖 | | 3 | log4net.config | log4net配置 | | 4 | SunnyUI.dll | SunnyUI界面类库依赖 | | 5 | SunnyUI.Common.dll | SunnyUI界面类库依赖 | > :heart: 单文件DLL文件引用 (单文件是利用ILMerge将依赖DLL合并到主DLL文件里了,可以在一定情况下避免依赖版本冲突问题) | 序号 | 文件名称 | 备注 | |----|------|----| | 1 | AppHelper.dll | AppHelper类库主文件 | | 3 | log4net.config | log4net配置 | #### 使用说明 1. 单例运行,只需要在Program.cs里替换 Run 为单实例运行的Run即可,例如: ```csharp /// /// 应用程序的主入口点。 /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); AppHelper.AppSingleInstance.Run(new Form1()); //替换后即可保证应用程序单实例运行 } ``` 2. 启动加载窗口,需要按以下代码进行 ``` //启动加载等待 //StartingWindow startingWindow = new StartingWindow("应用程序名称","公司名称"); StartingWindow startingWindow = new StartingWindow("AppDemo", "dhsososo@163.com"); startingWindow.loadingHandler += () => { //做要加载的动作 这里放置软件启动需要加载的代码,比如载入软件配置、通讯连接等 注意该回调是在多线程里执行 startingWindow.SetTips("等待中1"); Thread.Sleep(2000); startingWindow.SetTips("等待中2"); Thread.Sleep(2000); startingWindow.SetTips("等待中3"); Thread.Sleep(2000); }; startingWindow.exitHandler += () => { //点击退出时 做要退出加载的动作 注意该回调是在多线程里执行 startingWindow.SetTips("退出加载1"); Thread.Sleep(2000); startingWindow.SetTips("退出加载2"); Thread.Sleep(2000); startingWindow.SetTips("退出加载3"); Thread.Sleep(2000); }; // startingWindow.ShowDialog(); ``` > :exclamation: 特别注意回调是多线程调用。即回调里的代码要能要多线程执行,不然就会报错,比如更新UI需要用委托 3. 日志功能 :exclamation: 注意:一定要在项目按引入要求引入log4net.config,并配置属性为 复制。或者手动复制到应用程序的目录下 > 用例 ``` LogHelper.Info($"程序加载完成"); LogHelper.Info($"程序异常",ex); LogHelper.Error($"程序加载完成"); LogHelper.Error($"程序异常",ex); ``` #### 其他 1. 项目应该特别适合用于工业控制上位机 2. 如有更多功能需求,请留下评论,作者会根据情况进行更新 3. 如有BUG,或者兼容问题,请提交issues,或与作者联系 dhsososo@163.com ,邮件标题请注明:AppHelper项目