Aborts the caller filter operation.
public bool Abort {get; set;}
public:
property bool Abort
{
bool get()
void set(bool value)
}
Abort # get and set (CodecsFilterHeartbeatEventArgs)
true to abort the caller filter operation; otherwise, false. The default value is false.
Refer to RasterCodecs.FilterHeartbeat for more information.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
using Leadtools.Svg;
// Call this method with a very large and complex XLSX document and a timeout in seconds value
// Returns true on success and false if aborted
// For each page, the image is loaded and passed to the processImage action
public bool FilterHeartbeatExample(string inputFileName, int timeoutSeconds, Action<RasterImage, int> processImage)
{
using (var rasterCodecs = new RasterCodecs())
{
// This is the start time, we will reset this value
// anytime we start an operation
DateTime startOperationTime = DateTime.Now;
// Create a heartbeat handler
EventHandler<CodecsFilterHeartbeatEventArgs> heartbeatHandler = (sender, e) =>
{
// Abort if it has been more than timeoutSeconds since last operation
TimeSpan timeSpan = DateTime.Now - startOperationTime;
if (timeSpan.TotalSeconds > timeoutSeconds)
{
e.Abort = true;
}
};
// Install the heartbeat handler
rasterCodecs.FilterHeartbeat += heartbeatHandler;
// First, get information on the file to get the number of pages
RasterImageFormat format;
int pageCount = 0;
// Reset the start time
startOperationTime = DateTime.Now;
using (CodecsImageInfo imageInfo = rasterCodecs.GetInformation(inputFileName, true))
{
// If GetInformationt took more than timeoutSeconds then we aborted the operation
// inside heartbeatHandler and GetInformation will return RasterImageFormat.Unknown
format = imageInfo.Format;
if (format != RasterImageFormat.Unknown)
pageCount = imageInfo.TotalPages;
}
// Did we abort?
if (format == RasterImageFormat.Unknown)
{
// Yes, fail
rasterCodecs.FilterHeartbeat -= heartbeatHandler;
return false;
}
// Now load all the pages
for (int pageNumber = 1; pageNumber <= pageCount; pageNumber++)
{
// Reset the start time
startOperationTime = DateTime.Now;
RasterImage image = rasterCodecs.Load(inputFileName, pageNumber);
// If Load took more than timeoutSeconds then we aborted the operation
// inside heartbeatHandler and Load will return null
// Did we abort?
if (image == null)
{
// Yes, fail
rasterCodecs.FilterHeartbeat -= heartbeatHandler;
return false;
}
// Process the image and then delete it
processImage(image, pageNumber);
image.Dispose();
}
rasterCodecs.FilterHeartbeat -= heartbeatHandler;
// We successfully loaded and processed all the pages from the file
return true;
}
}
import java.io.*;
import java.net.*;
import java.nio.file.Paths;
import java.util.*;
import java.time.Instant;
import java.time.Duration;
import org.junit.*;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import static org.junit.Assert.*;
import leadtools.*;
import leadtools.codecs.*;
import leadtools.codecs.RasterCodecs.FeedCallbackThunk;
import leadtools.drawing.internal.*;
import leadtools.imageprocessing.*;
import leadtools.imageprocessing.color.ChangeIntensityCommand;
import leadtools.svg.*;
Instant start;
int timeoutSeconds;
public void filterHeartbeatExample() throws InterruptedException {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
String inputFileName = combine(LEAD_VARS_IMAGES_DIR, "large_sheet_5k.xlsx");
RasterCodecs rasterCodecs = new RasterCodecs();
Calendar.getInstance();
start = Instant.now();
timeoutSeconds = 20;
// Create a heartbeat handler
// Install the heartbeat handler
rasterCodecs.addFilterHeartbeatListener(heartbeatHandler);
// First, get information on the file to get the number of pages
RasterImageFormat format;
int pageCount = 0;
Calendar.getInstance();
CodecsImageInfo imageInfo = rasterCodecs.getInformation(inputFileName, true);
// If GetInformation took more than timeoutSeconds then we aborted the
// operation
// inside heartbeatHandler and GetInformation will return
// RasterImageFormat.Unknown
format = imageInfo.getFormat();
if (format != RasterImageFormat.UNKNOWN) {
pageCount = imageInfo.getTotalPages();
}
// Did we abort?
if (format == RasterImageFormat.UNKNOWN) {
// Yes, fail
rasterCodecs.addFilterHeartbeatListener(heartbeatHandler);
return;
}
// Now load all the pages
for (int pageNumber = 1; pageNumber <= pageCount; pageNumber++) {
// Reset the start time
start = Instant.now();
RasterImage image = rasterCodecs.load(inputFileName, pageNumber);
// If Load took more than timeoutSeconds then we aborted the operation
// inside heartbeatHandler and Load will return null
// Did we abort?
if (image == null) {
// Yes, fail
rasterCodecs.addFilterHeartbeatListener(heartbeatHandler);
return;
}
// Process the image and then delete it
processImage(image, pageNumber);
image.dispose();
}
rasterCodecs.addFilterHeartbeatListener(heartbeatHandler);
// We successfully loaded and processed all the pages from the file
return;
}
CodecsFilterHeartbeatListener heartbeatHandler = new CodecsFilterHeartbeatListener() {
public void onHeartbeat(CodecsFilterHeartbeatEvent e) {
// Abort if it has been more than timeoutSeconds since last operation
Instant end = Instant.now();
Duration timeElapsed = Duration.between(start, end);
if (timeElapsed.getSeconds() > timeoutSeconds) {
e.setAbort(true);
}
}
};
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document