我很困惑,有人可以告诉我为什么,当我打电话给:
using (Mutex mtx = new Mutex(false,strId)) { }
我得到这个例外:
无法findpath的一部分。
如果strId设置为localhostsqlEXPRESS-MyName-2类的东西,
从托pipe代码与设备驱动程序接口 – 无P / Invoke?
如果在3个否则可选的正则expression式expression式中至less有1个字符匹配,则需要“不匹配”
如何安全地保存文件到磁盘没有Windows拒绝的风险呢?
在IIS 7.5 / Windows 7家庭高级版RavendB错误
旧的本地应用程序可以在Windows8平板电脑版上运行吗
有更快的替代GDI GetPixel()?
.NET CLR不需要操作系统?
当用户login到Windows时,ToolStripButton从PropertyGrid中消失
从文档 :
在运行终端服务的服务器上,命名的系统互斥可以具有两个可见性级别。 如果它的名字以前缀“Global ”开始,则互斥体在所有终端服务器会话中都可见。 如果其名称以前缀“Local ”开头,则互斥体仅在创建它的终端服务器会话中可见。 在这种情况下,服务器上的每个其他终端服务器会话中都可能存在具有相同名称的单独互斥锁。 如果您在创建已命名的互斥锁时未指定前缀,则会以“Local ”作为前缀。 在终端服务器会话中,两个互斥名称不同的前缀是单独的互斥锁,并且这两个互斥锁对于终端服务器会话中的所有进程都是可见的。 也就是说,前缀名称“Global ”和“Local ”描述了互斥体名称相对于终端服务器会话的范围,而不是相对于进程。
由于您在名称( )中使用了反斜杠,因此假定您正在尝试指定可见性级别,然后发现localhost不是有效的可见性级别,因此会生成异常。
很奇怪.NET文档没有明确提到是互斥体名称中的保留字符,Win32文档可以更好地解释它( 链接 ):
该名称可以具有“全局”或“本地”前缀以在全局或会话命名空间中显式创建对象。 名称的其余部分可以包含除反斜杠字符()之外的任何字符 。 有关更多信息,请参阅内核对象命名空间 。 使用终端服务会话实现快速用户切换。 内核对象名称必须遵循终端服务概述的准则,以便应用程序可以支持多个用户。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。