目前,我使用下面的代码在MemoryMappedFile
中找到适合序列化对象的内容。
基本上,我增加了MemoryMappedFile
的大小,直到NotSupportedException
(不能扩展流的长度)不再被抛出。
MemoryMappedFile mmf = MemoryMappedFile.CreateNew(blobName, this.size);
bool serializeOk = false;
while (!serializeOk)
{
try
{
using (var stream = mmf.CreateViewStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
}
serializeOk = true;
}
catch (NotSupportedException)
{
mmf.Dispose();
this.size *= 2;
mmf = MemoryMappedFile.CreateNew(blobName, this.sizeMemMapFile);
}
}
问。有人可以提出一个更好的契合度更高效的解决方案吗?