- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
今次介绍一个应用程序单例唯一运行方案的代码.
我们知道,有些应用程序在操作系统中需要单例唯一运行,因为程序多开的话会对程序运行效果有影响,最基本的例子就是打印机,只能运行一个实例。这里将笔者单例运行的代码共享出来,需要的读者请自己复用该代码到自己的项目中即可.
1、 项目目录; 。
下面是项目目录,因为是一段代码,所以给出的例子比较简单.
。
。
2、 代码介绍; 。
这里的代码挺简单的,就是获取应用程序的GUID和运行的进程进行判断,因为GUID唯一,所以更改了程序名称或者改变了目录都不会有影响;而运行进程判断是附加的方式,防止当前目录的程序运行多次.
1 namespace ProgramInstance 2 { 3 using System; 4 using System.Diagnostics; 5 using System.Reflection; 6 using System.Runtime.InteropServices; 7 using System.Threading; 8 9 10 /// <summary> 11 /// 单例程序操作类 12 /// </summary> 13 internal class SingleInstance 14 { 15 /// <summary> 16 /// 程序是否运行 17 /// </summary> 18 /// <returns> true 程序已运行;false 程序未运行 </returns> 19 internal static bool IsRunning( out Process process) 20 { 21 // 如果判断全系统唯一,直接用下列方法;如果判断当前文件夹唯一,则将GUID判断去掉; 22 new Mutex( true ,
new Guid(((GuidAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(),
typeof (GuidAttribute))).Value).ToString( " N " ),
out bool createdNew); 23 process = RunningInstance(); 24 return (!createdNew || (process != null )); 25 } 26 /// <summary> 27 /// 获取当前程序进程实例 28 /// </summary> 29 /// <returns> 程序进程实例 </returns> 30 private static Process RunningInstance() 31 { 32 Process currentProcess = Process.GetCurrentProcess(); 33 foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName)) 34 { 35 if ((process.Id != currentProcess.Id) &&
(Assembly.GetExecutingAssembly().Location.Replace( " / " , @" \ " ) == currentProcess.MainModule.FileName)) 36 { 37 return process; 38 } 39 } 40 return null ; 41 } 42 } 43 }
。
1 namespace SingleInstance 2 { 3 using System; 4 using System.Diagnostics; 5 using System.Runtime.InteropServices; 6 using System.Windows.Forms; 7 8 /// <summary> 9 /// 程序类 10 /// </summary> 11 internal static class Program 12 { 13 [DllImport( " User32.dll " )] 14 private static extern bool SetForegroundWindow(IntPtr hWnd); 15 [DllImport( " User32.dll " )] 16 private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); 17 18 /// <summary> 19 /// 应用程序的主入口点 20 /// </summary> 21 [STAThread] 22 static void Main() 23 { 24 if (ProgramInstance.SingleInstance.IsRunning( out Process process)) 25 { 26 ShowWindowAsync(process.MainWindowHandle, 9 | 1 ); 27 SetForegroundWindow(process.MainWindowHandle); 28 29 return ; 30 } 31 32 33 Application.EnableVisualStyles(); 34 Application.SetCompatibleTextRenderingDefault( false ); 35 36 Application.Run( new Form1()); 37 } 38 } 39 }
3、 运行截图; 。
因为是代码段复用,所以这里不提供运行截图了.
。
4、 源码下载; 。
需要该例子代码的,请移步到下面链接进行下载:
https://download.csdn.net/download/lzhdim/88158095 。
。
上面介绍了C#编写的应用程序单例运行的例子,希望对有该需求的读者以帮助。后面会将笔者认为有用的代码段共享出来,让需要的读者进行代码段复用.
。
注: 如果需要应用程序多开(放到其它文件夹中,或者在当前文件夹中复制更改应用程序名称),请将GUID的判断去掉即可.
最后此篇关于基于C#的应用程序单例唯一运行的完美解决方案-开源研究系列文章的文章就讲到这里了,如果你想了解更多关于基于C#的应用程序单例唯一运行的完美解决方案-开源研究系列文章的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
为了加速测试字谜字符串的快速输出行为,我 came up with基于质数的哈希方案——尽管它看起来像 I wasn't the first . 基本思想是将字母映射到素数,并计算这些素数的乘积。字母
我使用 Perfect Framework 创建了一个 Swift 3.0 服务器。一切都按预期进行得很好,但我正在尝试了解是否有更好的方法来做一些事情。 来自 iOS 背景,我知道总是在不同的线程中
我有一个固定大小的正方形 div,希望使用 CSS 在其中放置任意大小的图像,以便它在水平和垂直方向上都居中。横向很容易: .container { text-align: center } 对于垂直
程序员离不开终端,配置一个好看又好用的终端,可以提高工作效率. 本篇文章记录了使用 Oh My Zsh + PowerLevel9k + zsh插件 快速配置Ubuntu下默认终端的过程. 我们在
在请求处理程序中,处理例如获取 https://example.com/collections/1或 POSThttp://0.0.0.0:8080/collections 如何获取服务器地址 htt
我正在使用 perfect 和 SQLite司机和StORM作为连接器。我可以一一保存(创建)多行。为了使其更快,我想一次创建多行,我该怎么做? 最佳答案 从完美的 SQLite-StORM 和 Pe
这是我在这里的第一篇文章,所以我希望我提供所有正确的信息。 我目前正在开发一个简单的菜单应用程序,它有一个按钮控制数组(使用 MSDN 建议的控制数组的变通方法),我很难重新调整表单大小和将按钮居中。
在 androidplot XYPlot 中,如果您有较大的值(许多数字)和/或较大的字体大小,则 Y 轴上的刻度标签会被剪裁。这个(以及 X 轴上的类似问题)之前已经在这些问题中讨论过: Range
注意:我遗漏了不相关的代码 所以我目前正在研究 CCC 1996 P1,这个问题的全部目的是能够计算一个整数输入是完美数、不足数还是充数。我上面列出的代码可以工作,但是我认为它太慢了。该代码会迭代每个
我需要什么 我需要一个产生双射输出的算法。我有一个 31 位输入,需要一个伪随机 31 位输出。 我考虑过的 CRC 在其位宽内是双射的。 我查看了 Google 并找到了多项式,但找不到表格或算法。
我在 Ubuntu 14.04.1、clang-3.8 上使用 PerfectSwift我使用的是 Perfect,一切正常,但现在,我不能再编译了(但它可以在我的 mac 上编译) 错误日志是 /h
如果您对分表有以下痛点那么不妨试试我这边开源的框架sharding-core ,是否需要无感知使用分表组件,是否需要支持abp,是否需要支持自定义分表规则,是否需要支持自定义分表键,是否需要支持特定
我正在尝试确定我的 crc 与“ 理想 ”32 位 crc 的比较。 因此,我运行我的 crc 超过 100 万个完全随机的数据样本并收集了碰撞数量,我想将此数字与我可以从“ 理想 ”crc 中预期的
我正在开发一个项目,需要验证我的 URL,并偶然发现了以下正则表达式模式; /(((http|ftp|https):\/{2})+(([0-9a-z_-]+\.)+(aero|asia|biz|cat
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
我正在创建一个需要居中于中间的圆形网站。背景由围绕中心图像的圆圈组成。每当我以全屏(F11 快捷键)查看我的网站时,无论我的屏幕分辨率如何,它都完美居中。 如果我在没有全屏显示的情况下查看我的网站,我
所以我有一个网站,在开发人员工具中测试响应能力时看起来很棒,但在 iPhone 本身上实际测试时却没有居中并且看起来有些破烂。 什么会导致这种情况,如果我无法使用 iPhone(在我的 android
我有一个内部类,它扩展了 AbstractTableModel。 import javax.swing.table.AbstractTableModel; public class MyClass e
所以我正在使用 Perfect 服务器开发一个将值返回给客户端的应用程序。目前,它需要从另一个 API 下载一些数据,对其进行处理,然后将其发送给客户端。 然而,出于某种原因,它在 OSX 中编译良好
我有一些 CSS 按钮。 “按钮”效果是通过在 anchor 标记中使用固定大小的 元素来完成的,并且 css 规则以 a span:active 、 a span:hover 的形式显示按钮状态。
我是一名优秀的程序员,十分优秀!