Verwendung von CustomImplementationFactory zur Erstellung einer benutzerdefinierten Implementierung des MemoryStream

Mögliche Verwendungsszenarien

Aspose.Cells hat eine API namens CellsHelper.CustomImplementationFactory, die es dem Benutzer ermöglicht, benutzerdefinierte Implementierungen wie die Verwendung der Recyclable-Speicherimplementierung anstelle des Standard-MemoryStream zu verwenden.

Verwendung von CustomImplementationFactory zur Erstellung einer benutzerdefinierten Implementierung des MemoryStream

Der folgende Beispielcode veranschaulicht, wie man CellsHelper.CustomImplementationFactory in Ihrem Programm verwendet. Manchmal gibt es genügend Speicher in Ihrem System, aber der Speicher ist nicht zusammenhängend. MemoryStream-Objekte verwenden zusammenhängenden Speicher, aber Sie können die Implementierung von MemoryStream so bereitstellen, dass sie stattdessen nicht zusammenhängenden Speicher verwendet.

Beispielcode

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