gpt4 book ai didi

c# - 内存映射文件访问被拒绝

转载 作者:行者123 更新时间:2023-11-30 13:02:49 24 4
gpt4 key购买 nike

我正在尝试将一段匆忙拼凑起来的旧代码重构为更优雅的代码。

该项目有两个部分,一个 Windows 服务和一个监视服务事件的表单应用程序。

为了允许这种通信,我决定使用非持久性内存映射文件。

下面是旧项目中的工作代码:

var security = new MemoryMappedFileSecurity();
security.AddAccessRule(new AccessRule<MemoryMappedFileRights>("everyone", MemoryMappedFileRights.FullControl,AccessControlType.Allow));

file = MemoryMappedFile.CreateOrOpen(@"Global\" + instance, bufferSize,
MemoryMappedFileAccess.ReadWrite,
MemoryMappedFileOptions.DelayAllocatePages, security,
HandleInheritability.Inheritable);

上面的代码在一个由服务和表单运行的构造器中,它们使用完全相同的代码,并且无论哪个创建了 mmf,它都能正常工作。

现在我在一个新项目中有相同的代码,但是如果服务首先创建了 mmf,那么表单会得到一个访问路径被拒绝的错误,如果表单创建了 mmf,则服务“打开”他的那一边很好,但是两者都看不到所写的信息,这让我相信他们实际上看的不是同一件事。

此时我不知道从哪里开始调试问题,由于 session 0 隔离,我正在使用安全规则和“全局”命名空间。

我就是想不通为什么它在其中一个有效而在另一个无效。

任何关于从这里去哪里的建议都将不胜感激。另外,如果需要更多代码,请告诉我。

最佳答案

在经历了很多悲伤之后,我找到了问题的答案。

显然 Visual Studios 不喜欢我将包含该代码的文件添加到我的项目中的方式。我只是做了一个“添加现有”。

为了解决这个问题,我创建了一个新类,并从另一个文件中复制/粘贴了代码:

现在一切正常。

关于c# - 内存映射文件访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com