c# - 使用 MemoryManagedViewAccessor 将 json 序列化字符串写入文件
问题描述
我是 MemoryMappedFiles 的新手。我正在使用 MemoryMappedFile 创建一个文件,我想向它写入一个 json 字符串。但问题在于 MemoryMappedViewAccessor 的 Write 方法,没有一个重载接受字符串。请帮忙。
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,
}
}
解决方案
推荐阅读
- firebase - firebase auth 未定义类'OAuthProvider'
- django - Django生产中的错误500,看不到错误
- c - fget 干扰之前的 scanf
- git - 将 x 分支加入和替换到 master 分支的 git 命令是什么?
- python-3.x - 我们能用条件语句解决这个问题吗
- tensorflow - “连接”层需要具有匹配形状的输入,连接轴除外。得到输入形状:[(None, 352, 640, 64), (1, 352, 640, 64)]
- python-3.7 - 无法在 spacy 中加载语言模型
- angular - 在现有的 Angular 8 项目中使用 Ionic 组件
- angular - 我得到的这个错误是什么 - 邮递员返回 true,但 Angular 甚至不调用 http?
- android - 在 Kotlin 中使用 check 验证字符串失败