当前位置: 首页 > wzjs >正文

做项目的编程网站网络维护

做项目的编程网站,网络维护,企业密信免费服务器,石家庄发生大事了可以在 Windows 和 Linux 上运行,利用了 .NET Core 的 System.IO.MemoryMappedFiles 库。这个类实现了共享内存的创建、打开、读取和写入功能。以下是对代码的一些分析和建议改进。 代码分析 初始化与打开共享内存: Init 方法用于创建新的共享内存段。OpenMem 方法…

可以在 Windows 和 Linux 上运行,利用了 .NET Core 的 System.IO.MemoryMappedFiles 库。这个类实现了共享内存的创建、打开、读取和写入功能。以下是对代码的一些分析和建议改进。

代码分析

  1. 初始化与打开共享内存:

    • Init 方法用于创建新的共享内存段。
    • OpenMem 方法用于打开已存在的共享内存段。
    • 这两个方法都处理了异常并返回状态码,非常适合用于错误处理。
  2. 关闭共享内存:

    • Close 方法确保释放资源,避免内存泄漏。
  3. 读写数据:

    • Read 和 Write 方法提供了数据读写的功能,支持指定偏移量和大小。
  4. 状态管理:

    • _isInitialized 和 _isOpened 标志用于跟踪共享内存的状态。
using System;
using System.IO.MemoryMappedFiles;
using System.Runtime.InteropServices;namespace MemoryDB
{class Class_ShareMemory{private MemoryMappedFile _memoryMappedFile;private MemoryMappedViewAccessor _viewAccessor;private long _memSize;private string _name;private bool _isInitialized;private bool _isOpened;public Class_ShareMem(){_isInitialized = false;_isOpened = false;}/// <summary>/// 初始化共享内存/// </summary>/// <param name="name">共享内存名称</param>/// <param name="size">共享内存大小</param>/// <returns></returns>public int Init(string name, long size){if (size <= 0) size = 0x00800000; // Default size_memSize = size;_name = name;try{// 根据操作系统设置共享内存名称string fullName = GetFullMemoryMappedFileName(_name);_memoryMappedFile = MemoryMappedFile.CreateNew(fullName, _memSize);_viewAccessor = _memoryMappedFile.CreateViewAccessor();_isInitialized = true;}catch (Exception ex){Console.WriteLine($"创建共享内存失败: {ex.Message}");return 2; // 创建失败}return 0; // 创建成功}/// <summary>/// 打开共享内存/// </summary>public int OpenMem(string name, long size){if (size <= 0) size = 0x00800000; // Default size_memSize = size;_name = name;try{// 根据操作系统设置共享内存名称string fullName = GetFullMemoryMappedFileName(_name);_memoryMappedFile = MemoryMappedFile.OpenExisting(fullName);_viewAccessor = _memoryMappedFile.CreateViewAccessor();_isOpened = true;}catch (Exception ex){Console.WriteLine($"打开共享内存失败: {ex.Message}");return 1; // 打开失败}return 0; // 打开成功}/// <summary>/// 关闭共享内存/// </summary>public void Close(){_viewAccessor?.Dispose();_memoryMappedFile?.Dispose();_isInitialized = false;_isOpened = false;}/// <summary>/// 读数据/// </summary>/// <param name="data">数据</param>/// <param name="offset">起始地址</param>/// <param name="size">个数</param>/// <returns></returns>public int Read(ref byte[] data, long offset, int size){if (offset + size > _memSize) return 2; // 超出数据区if (_isInitialized || _isOpened){_viewAccessor.ReadArray(offset, data, 0, size);}else{return 1; // 共享内存未初始化}return 0; // 读成功}/// <summary>/// 写数据/// </summary>/// <param name="data">数据</param>/// <param name="offset">起始地址</param>/// <param name="size">个数</param>/// <returns></returns>public int Write(byte[] data, long offset, int size){if (offset + size > _memSize) return 2; // 超出数据区if (_isInitialized || _isOpened){_viewAccessor.WriteArray(offset, data, 0, size);}else{return 1; // 共享内存未初始化}return 0; // 写成功}/// <summary>/// 根据操作系统获取完整的共享内存名称/// </summary>/// <param name="name">共享内存名称</param>/// <returns>完整的共享内存名称</returns>private string GetFullMemoryMappedFileName(string name){// 在 Windows 中使用 Global 前缀,在 Linux 中不使用if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)){return $"Global\\{name}";}else{return name; // Linux 上直接使用名称}}}
}

http://www.dtcms.com/wzjs/335558.html

相关文章:

  • 免费素材视频软件app长沙正规seo优化价格
  • 建国外网站输入关键词自动生成标题
  • 建设部职业资格注册网站百度推广优化工具
  • 我看别人做系统就直接网站下载广州市最新消息
  • 色母图片seo专业培训课程
  • 汉口北做网站珠海网站建设
  • 做网站软件大全百度指数官网登录
  • 网站软文得特点抖音运营推广策划方案
  • wordpress文章列分页淘宝seo具体优化方法
  • 南京 网站开发免费自助建站网站
  • 网站推广资讯seo优化网站推广
  • 企业网站需求方案网站关键词优化推广哪家好
  • 网页美工薪酬范围网站优化排名资源
  • kocool网站开发百度知道官网首页登录入口
  • 如何建设网站 知乎上海网络推广专员
  • 号码认证西安搜索引擎优化
  • 做商城网站价格市场营销平台
  • 我国省级档案网站建设状况为什么外包会是简历污点
  • 做个人网站到哪里做互联网广告推广是什么
  • 推广网站链接怎么做网络工具
  • 网站建设 ui设计郑州官网网站推广优化
  • 网站里做个子网页怎么做最新最好的磁力搜索
  • 招商网站建设服务商搜索引擎优化seo信息
  • 江苏企业网站建设价格如何做好网络营销管理
  • 网站统一做301网站推广平台搭建
  • 做网站效果图是用ps还是ai网站项目开发流程
  • 网站开发人员考核指标seo网站优化多少钱
  • 商标logo设计公司深圳sem优化
  • 门户网站开发报价品牌营销成功案例
  • 网站建设的客户在哪里淘宝搜索排名