*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

<C#>
「メモリマップドファイルでのデーターをシリアライズ」のコード No.5


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

.






元のページ


元ページ「<C# > メモリマップドファイルでのデーターをシリアライズ」
http://note.chiebukuro.yahoo.co.jp/detail/n179691

 

 

記述量上限の制限で、ページを分けて記述しています。




本ページの前のページ


「メモリマップドファイルでのデーターをシリアライズ」のコード No.4

http://note.chiebukuro.yahoo.co.jp/detail/n179738

 

記述量上限の制限で、ページを分けて記述しています。







本ページの次のページ


「メモリマップドファイルでのデーターをシリアライズ」のコード No.6

http://note.chiebukuro.yahoo.co.jp/detail/n179742

 

記述量上限の制限で、ページを分けて記述しています。









はじめに


元ページの「<C#> メモリマップドファイルでのデーターをシリアライズ」におけるコードをここに記述します。








マップビューアクセスクラスのコード




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


// <C# 4.0以降> メモリマップドファイルでのデーターをシリアライズ
namespace SharedMemory4_SerializedData
{


    // ************************************
    // マップビューアクセスクラス
    // ************************************
    public partial class MappViewController
    {


        // ============================
        // byte型、及びbyte型配列へのデーター設定メソッド
        // ============================


        // ==============
        // byte型データー設定メソッド
        // byte型データーを、メモリマップドファイルによるメモリ領域
        // に設定する。
        // 第1引数: 書き込み開始位置 (バイト数)
        //           入力時: 書き込みを行う先頭部のインデックス
        //           出力時: 書き込んだデーターの末尾部のインデックスの、
        //                   さらに次のインデックス(すなわち、次回の書
        //                   き込み時の先頭インデックス)
        // 第2引数: 設定データー
        public void SetByteData(
            ref int Write_Position,
            byte data)
        {


            // マップビューオープン
            using (var accessor = SMemory.mmf.CreateViewAccessor())
            {
                // メモリマップドファイルへデーター書き込み
                accessor.Write(Write_Position, data);
                //SMemory.Address[Write_Position] = data;
            }


            // 次のデーターを設定する時のために、インデックスを移動
            Write_Position += sizeof(byte);

        }

 

        // ==============
        // byte型配列データー設定メソッド < 可変長 >
        // byte型の配列データーを、メモリマップドファイルによるメモリ領
        // 域に設定する。
        // 第1引数: 書き込み開始位置 (バイト数)
        //           入力時: 書き込みを行う先頭部のインデックス
        //           出力時: 書き込んだデーターの末尾部のインデックスの、
        //                   さらに次のインデックス(すなわち、次回の書
        //                   き込み時の先頭インデックス)
        // 第2引数: 設定データー
        public void SetByteArray(
            ref int Write_Position,
            byte[] ArrayData)
        {

            // 配列データーのサイズ(単位はバイトでのサイズ)
            int ByteSizeOfArryData = ArrayData.Length * sizeof(byte);


            // 配列データーのサイズを設定
            SetInt32Data(
                ref Write_Position,
                ByteSizeOfArryData);


            // 配列データーを設定
            SetByteFixedLengthArray(
                ref Write_Position,
                ArrayData);

        }

 

        // ==============
        // byte型配列データー設定メソッド < 固定長 >
        // byte型の配列データーを、メモリマップドファイルによるメモリ領
        // 域に設定する。
        // 第1引数: 書き込み開始位置 (バイト数)
        //           入力時: 書き込みを行う先頭部のインデックス
        //           出力時: 書き込んだデーターの末尾部のインデックスの、
        //                   さらに次のインデックス(すなわち、次回の書
        //                   き込み時の先頭インデックス)
        // 第2引数: 設定データー
        public void SetByteFixedLengthArray(
            ref int Write_Position,
            byte[] ArrayData)
        {

            // マップビューオープン
            using (var accessor = SMemory.mmf.CreateViewAccessor())
            {
                // メモリマップドファイルへデーター書き込み
                for (int i = 0; i < ArrayData.Length; i++)
                {
                    // byte型データー設定
                    accessor.Write(Write_Position + i, ArrayData[i]);
                    //SMemory.Address[Write_Position + i] = ArrayData[i];
                }
            }


            // 次のデーターを設定する時のために、インデックスを移動
            Write_Position += ArrayData.Length;

        }


    }
}



さいごに


本ページの内容説明については、元ページを参照して下さい。