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