Использование CustomImplementationFactory для создания пользовательской реализации потока памяти
Возможные сценарии использования
Aspose.Cells предоставляет API с названием CellsHelper.CustomImplementationFactory, которое позволяет пользователю предоставить пользовательскую реализацию, такую как использование реализации памяти Recyclable вместо стандартного MemoryStream.
Использование CustomImplementationFactory для создания пользовательской реализации потока памяти
Нижеприведенный образец кода иллюстрирует, как использовать CellsHelper.CustomImplementationFactory в вашей программе. Иногда в вашей системе достаточно памяти, но память не является непрерывной. Объекты Memory Stream используют непрерывную память, но вы можете предоставить реализацию Memory Stream таким образом, что он будет использовать непрерывную память.
Образец кода
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
//Implement CustomImplementationFactory - CELLSNET-45461 | |
public class MM : CustomImplementationFactory | |
{ | |
RecyclableMemoryStreamManager manager = new RecyclableMemoryStreamManager(); | |
public override MemoryStream CreateMemoryStream() | |
{ | |
return manager.GetStream("MM"); | |
} | |
public override MemoryStream CreateMemoryStream(int capacity) | |
{ | |
return manager.GetStream("MM", capacity); | |
} | |
} | |
//---------------------------------------- | |
//---------------------------------------- | |
//Assign implementation instance of CustomImplementationFactory | |
CellsHelper.CustomImplementationFactory = new MM(); | |
//Light cells data handler implementation | |
LightCellsDataHandlerVisitCells v = new LightCellsDataHandlerVisitCells(); | |
//Create workbook object | |
Workbook wb = new Workbook(sourceDir, new LoadOptions() { MemorySetting = MemorySetting.MemoryPreference, LightCellsDataHandler = v }); | |
//Print miscellaneous data | |
Console.WriteLine("Total sheets: " + wb.Worksheets.Count + ", cells: " + v.CellCount + ", strings: " + v.StringCount + ", formulas: " + v.FormulaCount); |