'Write json serialized string to file using MemoryManagedViewAccessor

I am new to MemoryMappedFiles. I am creating a file using MemoryMappedFile and I want to write a json string to it. But the problem is for the Write method of the MemoryMappedViewAccessor none of the overloads takes in a string. Please help.

public 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,
    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source