Utilizzo di CustomImplementationFactory per creare un implementazione personalizzata di MemoryStream
Possibili Scenari di Utilizzo
Aspose.Cells ha fornito un’API chiamata CellsHelper.CustomImplementationFactory che consente all’utente di fornire un’implementazione personalizzata come l’uso di un’implementazione della memoria riciclabile invece della MemoryStream predefinita.
Utilizzo di CustomImplementationFactory per creare un’implementazione personalizzata di MemoryStream
Il codice di esempio seguente illustra come fare uso di CellsHelper.CustomImplementationFactory nel tuo programma. A volte, c’è abbastanza memoria nel tuo sistema ma la memoria non è contigua. Gli oggetti MemoryStream utilizzano memoria contigua ma puoi fornire l’implementazione di MemoryStream in modo che utilizzi invece la memoria non contigua
Codice di Esempio
// 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); |