- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将应用程序“A”中的变量值共享给同一系统上的不同应用程序。我只需要根据要求使用 MemoryMappedFiles。我创建了另一个简单的应用程序“B”,它从应用程序 A 中读取共享变量的值。但是应用“B”给出了错误
Unable to find the specified file.
使用 VS 2012 以 C# 编写的示例应用程序 A 和 B:
在应用程序 A 的按钮点击事件上共享变量名称:
private void button1_Click(object sender, EventArgs e)
{
string Name = txtName.Text.ToString();
int howManyBytes = Name.Length * sizeof(Char) + 4;
label1.Text = howManyBytes.ToString();
using (var MyText = MemoryMappedFile.CreateOrOpen("MyGlobalData", howManyBytes, MemoryMappedFileAccess.ReadWrite))
{
byte[] array1 = new byte[howManyBytes];
array1 = GetBytes(Name);
using (var accessor = MyText.CreateViewAccessor(0, array1.Length))
{
accessor.WriteArray(0, array1, 0, array1.Length);
}
}
}
static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
return bytes;
}
在应用程序 B 的按钮单击事件上读取共享变量 MyGlobalData :
try
{
using (var mmf = MemoryMappedFile.OpenExisting("MyGlobalData"))
{
using (var accessor = mmf.CreateViewAccessor(0, 34))
{
byte[] array1 = new byte[34];
accessor.ReadArray(0, array1, 0, array1.Length);
string result = System.Text.Encoding.UTF8.GetString(array1);
txtName.Text = result;
}
}
}
catch (Exception ex)
{
MessageBox.Show(" Error :- " + ex.Message.ToString());
}
当尝试从 App B 读取共享变量时出现错误
Unable to find the specified file
我需要在txt文件中写入变量值然后分享吗?
最佳答案
内存映射文件有两种
您正在创建非持久内存映射文件,因此当最后一个进程关闭然后处理 MMF 时,它将被销毁。您通过 using 语句调用 Dispose
来关闭句柄,因此 MMF 被销毁。
您要么需要保持 MMF 打开,要么使用持久内存映射文件。要使 MMF 保持打开状态,请不要丢弃它。
关于c# - 使用 MemoryMappedFile 共享变量会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27143930/
在我的 WCF 服务中,我需要提供支持 Range 的文件下载功能用于分 block 下载的 HTTP header 。第一次调用GetFile服务方法创建新的MemoryMappedFile来自磁盘
在 Windows 下,当容量参数(最后一个参数)设置为比基础文件更大的大小时,此 F# 代码会将文件从 12 字节扩展到 655346 字节。这似乎是扩展内存映射文件的最干净的方法。在 mono/l
我有一些方法可以使用 MemoryMappedFiles 来写入/读取数据。如果我使用简单的字符串作为文件名,它们就可以正常工作,例如“file.mmf”。但是,如果我使用完整目录路径,则会抛出上述异
我在执行 MemoryMappedFile 流式传输时遇到了一个小问题。我有 2 个项目,一个用于发送字节,另一个用于读取字节。在这两个进程之间应该有一个 2 秒的 sleep 定时器。 我已经实现了
我在使用 C# 中的 MemoryMappedFiles 时遇到了一些问题。当我只使用 1 个进程时,它们工作得很好,但是当我尝试从不同的进程访问 mmf 文件时,我得到允许这样做的错误。 我有一个数
我正在学习本教程 here 我很难弄清楚如何将字符串“THIS IS A TEST MESSAGE”存储在内存映射文件中,然后将其从另一端拉出。本教程说使用字节数组。请原谅我,我是新手,先自己尝试。
我正在使用 MemoryMappedFile 在两个进程之间交换数据。所以我在两个过程中都创建/打开了这样的文件: MemoryMappedFile m_MemoryMappedFile = Memo
我有两个 .NET 4.0 WinForms 应用程序(主要)从共享的 MemoryMappedFiles 读取地理数据。最终用户可以自由启动其中一个应用程序或另一个应用程序,或同时运行这两个应用程序
如果我在同一个 MemoryMappedFile 中并行读写会发生什么?我是否有必要在阅读之前通过 Mutext 锁定它们,如 MSDN 上的示例所示? Memory-Mapped Files 最佳答
我有一个处理Excel文件(之前上传到服务器)的网络服务,涉及到很多数据库更新,需要相当长的时间。我想提供另一个 web 服务,可以调用它来检查这个过程的进度。它将进程的 ID(可能是 GUID)作为
我需要将应用程序“A”中的变量值共享给同一系统上的不同应用程序。我只需要根据要求使用 MemoryMappedFiles。我创建了另一个简单的应用程序“B”,它从应用程序 A 中读取共享变量的值。但是
我有创建内存映射文件的代码,如下所示: using (Mutex mutex = new Mutex(false, CoordinatorMutexName)) { mutex.WaitOne
我有一组大型对象(超过 20GB),我需要从应用程序快速访问它们。 到目前为止,我已经在应用程序启动时从磁盘读取这些文件到 RAM。这是一项昂贵的任务,因为文件被反序列化为内存中的对象。但是,在加载这
如何使用 MemoryMappedFile 读取文件字节并将其放入 byte[] 数组? 最佳答案 假设您只想读取文件的一部分,这样的事情应该可行: long offset = 0x10000000;
是否可以结合使用 MemoryMappedFile 和 FileSystemWatcher?换句话说,如何为 FileSystemWatcher 的构造函数获取内存映射文件的路径: new FileS
我的任务是实现一个搜索功能,该功能将搜索几个大型(几 MB)日志文件并返回包含关键字的行。日志文件不断被添加到池中,因此每次搜索都必须是动态的。 创建 MemoryMappedFile 是否有意义?对
在 C# 4.0 中,MemoryMappedFile 有几个工厂方法:CreateFromFile、CreateNew、CreateOrOpen 或 打开现有。如果 MemoryMappedFile
正如标题所说;我可以依赖 MemoryMappedFile 来创建一个全为零的文件吗?我已经通过读取一些新创建的文件进行了测试,但这种“测试”似乎是徒劳的,尽管我还没有看到非零字节。 是否有任何我遗漏
下面的代码抛出这个异常: “该进程无法访问文件 '\filename',因为它正被另一个进程使用。” 很公平,但是关闭阅读器和/或 mmf 以便删除文件的正确方法是什么?我认为 MemoryMappe
我用 MemoryMappedFile 做了一个简单的测试 msdn说: 2 个进程,1 个内存映射文件: 第一个进程添加字符串“1” 第一个进程等待 第二个进程添加字符串“2”并终止 第一个进程现在
我是一名优秀的程序员,十分优秀!