找到写入MemoryMappedFile的序列化对象的完美拟合

时间:2014-10-16 15:43:42

标签: c# memory-mapped-files

目前,我使用下面的代码在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);
    }
}

问。有人可以提出一个更好的契合度更高效的解决方案吗?

0 个答案:

没有答案
相关问题