←Select platform

CodecsGetInformationAsyncCompletedEventArgs Class

Summary
Contains data for the RasterCodecs.GetInformationAsyncCompleted event.
Syntax
C#
C++/CLI
Java
Python
public class CodecsGetInformationAsyncCompletedEventArgs : CodecsAsyncCompletedEventArgs 
public class CodecsGetInformationAsyncCompletedEvent extends CodecsAsyncCompletedEvent 
public ref class CodecsGetInformationAsyncCompletedEventArgs : public CodecsAsyncCompletedEventArgs  
class CodecsGetInformationAsyncCompletedEventArgs(CodecsAsyncCompletedEventArgs): 
Remarks

NOTE: This topic is part of RasterCodecs Async support using the .NET System.ComponentMode.AsyncOperation model. For .NET async/await support this type/member is not used. Instead, refer to RasterCodecs Async Operations.

The RasterCodecs class supports getting information on image files asynchronously using the RasterCodecs.GetInformationAsync methods. When calling any of these methods, the callerthread will not be blocked and the method will return instantly with an instance of CodecsImageInfo that is in a loading status (RasterImage.IsLoading is set to true). Do not use the other properties of this object while the object is loading.

When the RasterCodecs object finishes getting the information about the file, the various properties of the CodecsImageInfo will be populated with the image file information and the RasterImage.IsLoading property will be set to false.

Do not poll the RasterImage.IsLoading property to determine whether the image information has been collected. Instead, subscribe to the RasterCodecs.GetInformationAsyncCompleted event to get notification on when the GetInformationAsync operation is completed and whether any errors occurred.

The RasterCodecs.GetInformationAsyncCompleted event data will also contain the same object returned from RasterCodecs.GetInformationAsync so you do not have to keep the original object in your application.

The RasterCodecs.GetInformationAsyncCompleted event uses a CodecsGetInformationAsyncCompletedEventArgs data argument object. This class contains the following properties:

Property Description
Uri, Stream and FileName

Contains the URI, stream or file name passed to the method that initialized this asynchronous operation.

Only one of these properties can be a valid value (not a null reference) at any time. The property that contains a valid reference depends on which version of RasterCodecs.GetInformationAsync method has been called.

For example, if RasterCodecs.GetInformationAsync(Uri uri, bool totalPages, int pageNumberobject, object userState) is being called, the Uri will contain the same URI passed to the method while Stream and FileName will both be null. If RasterCodecs.GetInformationAsync(string fileName, bool totalPages, int pageNumberobject, object userState) is being called, the FileName will contain the same file name string value passed to the method while Uri and Stream will both be null and so on.

Info

Contains the CodecsImageInfo class instance that contains the information about the image file. This instance is the same object returned from the RasterCodecs.GetInformationAsync method. While the asynchronous operation is running, the value of theRasterImage.IsLoading property will be true, indicating that the object is being populated with the information and should not be used. When the asynchronous operation completes, the RasterCodecs.GetInformationAsyncCompleted event will fire and Info will contain the final and ready to use object. If an error occurs, this property will be set to null and the object is disposed internally by the toolkit.

Error

Contains any errors that might have occurred during the asynchronous operation. You must check this value when the RasterCodecs.GetInformationAsyncCompleted event fires and make sure it does not contain a valid Exception object.

Cancelled

Contains a value indicating whether an asynchronous operation has been canceled. For example, by calling RasterCodecs.CancelAsync when using RasterCodecs.GetInformationAsync with a URL

Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
public void GetInformationAsyncCompletedExample() 
{ 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
   Uri uri = new Uri(srcFileName); 
 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Now get information about the file asynchronously 
   codecs.GetInformationAsyncCompleted += new EventHandler<CodecsGetInformationAsyncCompletedEventArgs>(GetInformationAsyncCompletedExample_GetInformationAsyncCompleted); 
   object imageInfoObject = codecs.GetInformationAsync(uri, true, 1, null); 
 
   // Notice that the returned imageInfoObject is a CodecsImageInfo with IsLoading set to true at this point 
   // The IsLoading will be false (and hence, the object will be usable) when the GetInformationAsyncCompleted 
   // fires. 
} 
 
private void GetInformationAsyncCompletedExample_GetInformationAsyncCompleted(object sender, CodecsGetInformationAsyncCompletedEventArgs e) 
{ 
   if (e.Cancelled) 
   { 
      Debug.WriteLine("User canceled"); 
   } 
   else if (e.Error != null) 
   { 
      Debug.WriteLine("Error: " + e.Error.Message); 
   } 
   else 
   { 
      // Get the image info 
      CodecsImageInfo info = e.Info; 
      Debug.WriteLine("Image info obtainted asynchronously:\n{0}", info.ToString()); 
      info.Dispose(); 
   } 
 
   // Unsubscribe to the event and dispose the RasterCodecs object 
   RasterCodecs codecs = sender as RasterCodecs; 
   codecs.GetInformationAsyncCompleted -= new EventHandler<CodecsGetInformationAsyncCompletedEventArgs>(GetInformationAsyncCompletedExample_GetInformationAsyncCompleted); 
   codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
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.*; 
 
 
public void getInformationAsyncCompletedExample() throws URISyntaxException, IOException { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp"); 
   URI uri = Paths.get(srcFileName).toUri(); 
 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Now get information about the file asynchronously 
   codecs.addGetInformationAsyncCompletedListener(getInformationAsyncCompletedExampleGetInformationAsyncCompleted); 
   ILeadStream uriStream = LeadStreamFactory.create(uri); 
   codecs.getInformationAsync(uriStream, true, 1, null); 
 
   assertTrue("Check that URI exists", uri != null); 
   System.out.println("The URI exists"); 
 
   uriStream.close(); 
} 
 
CodecsGetInformationAsyncCompletedListener getInformationAsyncCompletedExampleGetInformationAsyncCompleted = new CodecsGetInformationAsyncCompletedListener() { 
 
   @Override 
   public void onGetInformationAsyncCompleted(CodecsGetInformationAsyncCompletedEvent e) { 
      if (e.getCancelled()) { 
         System.out.println("User canceled"); 
      } else if (e.getError() != null) { 
         System.out.println("Error: " + e.getError().getMessage()); 
      } else { 
         // Get the image info 
         CodecsImageInfo info = e.getInfo(); 
         System.out.println("Image info obtainted asynchronously:\n" + info.toString()); 
      } 
 
      // Unsubscribe to the event and dispose the RasterCodecs object 
      RasterCodecs codecs = (RasterCodecs) e.getSource(); 
      codecs.removeGetInformationAsyncCompletedListener( 
            getInformationAsyncCompletedExampleGetInformationAsyncCompleted); 
      codecs.dispose(); 
   } 
 
}; 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Codecs Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.