使用MemoryMappedFile共享变量给出错误

我需要将应用程序“ A”的变量值共享给同一系统上的不同应用程序。我只需要按照要求使用MemoryMappedFiles。我创建了另一个简单的应用程序“ B”,该应用程序从应用程序A读取共享变量的值。但是应用程序“ B”给出了错误

找不到指定的文件。

使用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读取共享变量时,它给出了错误

找不到指定的文件

我需要在txt文件中写入变量值然后共享它吗?

斯里拉姆·萨克提维(Sriram Sakthivel)

内存映射文件有两种类型

  • 持久内存映射文件
  • 非持久内存映射文件

您正在创建非持久内存映射文件,因此,当最后一个关闭该MMF句柄的进程时,它将被销毁。Dispose通过使用using语句调用它来关闭句柄,从而破坏了MMF。

您要么需要保持MMF打开状态,要么使用Persisted内存映射文件要保持MMF处于打开状态,请不要对其进行处置。

欲获得更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

变量声明给出错误

来自分类Dev

带函数的变量给出错误ajax

来自分类Dev

Xamarin.forms共享项目在创建时给出错误

来自分类Dev

Xamarin.forms共享项目在创建时给出错误

来自分类Dev

nlsLM给出错误:尝试使用零长度变量名-Black Scholes Model Fit

来自分类Dev

Oracle中的存储过程使用选择命令和给出错误的变量

来自分类Dev

Java 使用 if(search) == 和多个类给出错误搜索无法解析为变量

来自分类Dev

使用typedef重载会给出错误

来自分类Dev

使用CloudFlare页面规则重定向到HTTPS时,Facebook共享调试器给出错误

来自分类Dev

XSLT:字符串长度($变量)给出错误的答案

来自分类Dev

用sed中的变量替换String会给出错误

来自分类Dev

大括号,如果块变量定义给出错误

来自分类Dev

CodeIgniter选择列到变量中给出错误

来自分类Dev

声明了Python变量,但仍然给出错误

来自分类Dev

为什么我的代码为变量给出错误的值?

来自分类Dev

FindViewById给出错误

来自分类Dev

UIAlertController给出错误

来自分类Dev

CGIHTTPRequestHandler给出错误

来自分类Dev

Makefile给出错误

来自分类Dev

将值保存在“共享首选项”给出错误中

来自分类Dev

使用_id的MongoDB PHP搜索给出错误

来自分类Dev

C#到C ++代码(使用CLI)给出错误

来自分类Dev

火焰游戏逻辑使用java给出错误结果?

来自分类Dev

Express:在bcrypt.compare给出错误之前使用await

来自分类Dev

使用enableIvy编译Angular 9库:false给出错误

来自分类Dev

使用decimal.get_context()。prec会给出错误

来自分类Dev

使用PowerShell的Socket.Select给出错误

来自分类Dev

使用select的MYSQL中的COALESCE函数给出错误

来自分类Dev

未使用Picasso加载图像,未给出错误

Related 相关文章

热门标签

归档