我忙于编写将JSON序列化对象写入JSON文件的程序。 现在我遇到了问题。我想将列表中的每个对象单独写入JSON文件。在实际场景中,程序应该将所有对象添加到列表中,然后将列表一次写入JSON文件,但是现在我想逐个进行。我尝试这样做的方式会引入I / O错误,而且我不清楚为什么会这样做。
readonly BaseStore<TestObject> _store2 = new BaseStore<TestObject>("test", Settings.DatabaseBasePath);
private async void testToolStripMenuItem_Click(object sender, EventArgs e)
{
await Write();
}
private async Task Write()
{
for (int i = 0; i < 1000; i++)
{
await _store2.Save(new TestObject
{
Property = "value"
});
}
}
保存方法的代码:
public async Task Save(T obj)
{
var collection = _database.Load<T>(_collection);
// do some collection changes
await _database.Save(collection, _collection);
}
上述方法将调用以下方法:
public async Task Save(object obj, string collectionName)
{
string fileName = string.Format("{0}{1}", collectionName, ".json");
var json = JsonConvert.SerializeObject(obj, Formatting.None);
byte[] encodedText = Encoding.Unicode.GetBytes(json);
using (FileStream sourceStream = new FileStream(Path.Combine(_basePath, fileName),
FileMode.Append, FileAccess.Write, FileShare.None,
bufferSize: 4096, useAsync: true))
{
await sourceStream.WriteAsync(encodedText, 0, encodedText.Length);
};
}
以上代码会引发以下错误:
调用目标抛出了异常。 无法对打开了用户映射部分的文件执行请求的操作。
我想问题可能是for-loop中的Save方法尝试访问JSON文件,而前一个Save调用打开它,但我不知道如何解决它。
有人可以指出我正确的方向吗?