Memory mapped file senza file su hdd

di il
2 risposte

Memory mapped file senza file su hdd

Buon giorno ,premetto che non sono espertissimo ma mi arrangio un po con il C# , dovrei leggere un memory mapped file
che ho creato il codice che crea il memory mapped file e' il seguente
namespace NinjaTrader.NinjaScript.Indicators
{
    public class Aziocane : Indicator
    {
        MemoryMappedFile    file;
        protected override void OnStateChange()
        {
            if (State == State.SetDefaults)
            {
                Description                                 = @"Enter the description for your new custom Indicator here.";
                Name                                        = "Aziocane";
                Calculate                                   = Calculate.OnBarClose;
                IsOverlay                                   = false;
                DisplayInDataBox                            = true;
                DrawOnPricePanel                            = true;
                DrawHorizontalGridLines                     = true;
                DrawVerticalGridLines                       = true;
                PaintPriceMarkers                           = true;
                ScaleJustification                          = NinjaTrader.Gui.Chart.ScaleJustification.Right;
                //Disable this property if your indicator requires custom values that cumulate with each new market data event. 
                //See Help Guide for additional information.
                IsSuspendedWhileInactive                    = true;
            }
            else if (State == State.Configure)
            {
         file   = MemoryMappedFile.CreateOrOpen("Test", 1000,  MemoryMappedFileAccess.ReadWrite);

            }
            else if (State == State.Terminated)
            {
                file.Dispose();
            }
        }

        protected override void OnBarUpdate()
        {
            //Add your custom indicator logic here.
              byte[] data = ASCIIEncoding.ASCII.GetBytes("35;2020.06.26 10.00.01;ASK;1,12445;1");
              MemoryMappedViewAccessor accessor = file.CreateViewAccessor();
              accessor.Write(54, (ushort)data.Length);
              accessor.WriteArray(54 + 2, data, 0, data.Length);
        }
    }
}
il codice che va a leggere il memomory maped file e' il seguente
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.MemoryMappedFiles;

namespace csharpmapmem2
{
    class Program
    {
        static void Main()
        {
            MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("Test", 1000);
            MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor();
            ushort Size = accessor.ReadUInt16(54);
            byte[] Buffer = new byte[Size];
            accessor.ReadArray(54 + 2, Buffer, 0, Buffer.Length);
            Console.WriteLine(ASCIIEncoding.ASCII.GetString(Buffer));
            accessor.Dispose();
            mmf.Dispose();

        }
    }
}
il problema e' che invece ritornare la stringa "35;2020.06.26 10.00.01;ASK;1,12445;1" , mi ritorna un numero , credo sial offset ?
c'e' qualcuno che puo' darmi una manina ?
grazie in anticipo a tutti

2 Risposte

  • Re: Memory mapped file senza file su hdd

    faustf ha scritto:


    il problema e' che invece ritornare la stringa "35;2020.06.26 10.00.01;ASK;1,12445;1" , mi ritorna un numero , credo sial offset ?
    c'e' qualcuno che puo' darmi una manina ?
    Dove ti viene restituito quel numero?
    Hai provato a fare debug passo per passo per verificare l'iter del programma e il valore delle variabili?
  • Re: Memory mapped file senza file su hdd

    Si il programma di per se va bene , ma forse non uso bene qualche metodo , non saprei per questo chiedo se c'e' qualche esperto , il numero mi ritorna nella console sul consolewriteline
Devi accedere o registrarti per scrivere nel forum
2 risposte