Utilisation de CustomImplementationFactory pour créer une implémentation personnalisée de Memory Stream

Scénarios d’utilisation possibles

Aspose.Cells a fourni une API nommée CellsHelper.CustomImplementationFactory qui permet à l’utilisateur de fournir une implémentation personnalisée telle que l’utilisation d’une implémentation de mémoire recyclable au lieu du MemoryStream par défaut.

Utilisation de CustomImplementationFactory pour créer une implémentation personnalisée de Memory Stream

L’exemple de code suivant illustre comment utiliser CellsHelper.CustomImplementationFactory dans votre programme. Parfois, il y a suffisamment de mémoire dans votre système mais la mémoire n’est pas contiguë. Les objets Memory Stream utilisent une mémoire contiguë mais vous pouvez fournir l’implémentation de Memory Stream de telle manière qu’elle utilise plutôt une mémoire non contiguë.

Code d’exemple

// 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);