加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在每个机器应用程序中实现单个实例?

发布时间:2020-12-15 17:35:47 所属栏目:百科 来源:网络整理
导读:我必须限制我的.net 4 WPF应用程序,以便每台机器只能运行一次.请注意,我说每个机器,而不是每个会话. 我使用一个简单的互斥体实现单实例应用程序,直到现在,但不幸的是,这样一个互斥是每个会话. 有没有办法创建机器互连,还是有其他解决方案来实现每个机器应用
我必须限制我的.net 4 WPF应用程序,以便每台机器只能运行一次.请注意,我说每个机器,而不是每个会话.
我使用一个简单的互斥体实现单实例应用程序,直到现在,但不幸的是,这样一个互斥是每个会话.

有没有办法创建机器互连,还是有其他解决方案来实现每个机器应用程序的单个实例?

解决方法

我会使用一个全局的Mutex对象,这个对象必须保留在你的应用程序的一生中.
MutexSecurity oMutexSecurity;

//Set the security object
oMutexSecurity = new MutexSecurity();
oMutexSecurity.AddAccessRule(new MutexAccessRule(new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid,null),MutexRights.FullControl,AccessControlType.Allow));

//Create the global mutex and set its security
moGlobalMutex = new Mutex(True,"Global{5076d41c-a40a-4f4d-9eed-bf274a5bedcb}",bFirstInstance);
moGlobalMutex.SetAccessControl(oMutexSecurity);

bFirstInstance返回的地方,如果这是全局运行的应用程序的第一个实例.如果你的互斥体的全局部分或者替换为本地,那么互斥量只能是每个会话(这是现在的代码如何工作).

我相信我从Jon Skeet开始就得到了这项技术.

Mutex对象上的MSDN主题解释了Mutex对象的两个范围,并强调了为什么使用终端服务时非常重要(请参见第二个上一个注释).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读