Записать сериализованную строку json в файл с помощью MemoryManagedViewAccessor - PullRequest
0 голосов
/ 21 мая 2018

Я новичок в MemoryMappedFiles.Я создаю файл, используя MemoryMappedFile, и я хочу записать в него строку json.Но проблема в том, что для метода Write модуля MemoryMappedViewAccessor ни одна из перегрузок не принимает строку.Пожалуйста, помогите.

 class ApplicationSettingsViewModel
        {
            ApplicationSettingsModel model;
            MemoryMappedFile mmf = null;
            //This is not a singleton class but I guess it has to be one but its ok for demonstration.
            public ApplicationSettingsViewModel()
            {
                model = new ApplicationSettingsModel();
                CreateFileUsingMemoryMap();
            }

            private void CreateFileUsingMemoryMap()
            {
                var info = Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "/" + model.Data.Settings.OrcaUISpecificSettings.TimeOutFolder);
                string path = Path.Combine(info.FullName + "/" + model.Data.Settings.OrcaUISpecificSettings.File);
                mmf = MemoryMappedFile.CreateFromFile(path, FileMode.CreateNew, "MyMemoryFile", 1024 * 1024, MemoryMappedFileAccess.ReadWrite);
            }

            public MemoryMappedViewAccessor GetAccessor()
            {
                MemoryMappedViewAccessor mmvAccessor = null;
                if (mmf != null)
                {
                    mmvAccessor = mmf.CreateViewAccessor();
                }
                return mmvAccessor;
            }
        }

    public partial class MainWindow : Window
        {
            private readonly DispatcherTimer _activityTimer;
            private Point _inactiveMousePosition = new Point(0, 0);
            private ApplicationSettingsViewModel AppViewModel;
            Mutex mutex = new Mutex(false, "OrcaGeneStudyMutex");
            public MainWindow()
            {
                InitializeComponent();
            }
            public void WriteToFile(string status)
            {
                Root root = new Root();
                root.AllApplications.Add(new DataToWrite() { AppName = "DevOrca", Status = status });
                var jsonString = JsonConvert.SerializeObject(root);
                var Accessor = AppViewModel.GetAccessor();
                mutex.WaitOne();
                //Serialize Contents

                Accessor.Write(1024, jsonString); //it gives a complilation error when i try to pass the json string,
            }
    }
...