---
product: Chilkat
product_version: 11.7.0
language: csharp
language_label: C#
class: Compression
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/csCompressionRef.html
---
# Chilkat Compression — C# — v11.7.0

> Chilkat 11.7.0 · language=csharp · class=Compression
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/Compression.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/guide.md`.

## Purpose

**Compress and decompress bytes, text, files, and streams with a flexible API.**

`Chilkat.Compression` provides a general-purpose API for compressing and decompressing data in memory, files, and streams. It supports multiple algorithms, text charset conversion, encoded output, chunked processing, and streaming operations for large data.

**Multiple algorithms**

Supports `deflate`, `zlib`, `bzip2`, and `lzw`.

**Flexible data types**

Work with byte arrays, strings, `BinData`, `StringBuilder`, files, and streams.

**Chunked processing**

Process data incrementally with `FirstChunk` and `LastChunk` for chunk-aware methods.

**Encoded output**

Return compressed bytes as text using encodings such as `base64`, `hex`, and others.

**Streaming support**

Compress or decompress large files and streams with stable memory usage.

**Compression + encryption**

Combine compression and encryption in file workflows with integrated methods.

**Tip:** For text compression, explicitly set `Charset = "utf-8"` unless another encoding is required. For encoded compressed data, set `EncodingMode` to the desired output format.

For an extended overview, see [Compression Class Overview](https://www.chilkatsoft.com/compression_class_overview.asp). See also [Binary Encodings](https://www.chilkatsoft.com/binary_encodings.asp) for supported encoded output formats.

## Object creation, unlocking and error handling

**Object Creation**

```csharp
Chilkat.Compression obj = new Chilkat.Compression();
```

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in C#.

Minimal complete program:

```csharp
// Required once per process. Any string unlocks a 30-day trial; use your purchased code in production.
Chilkat.Global glob = new Chilkat.Global();
if (!glob.UnlockBundle("Anything for 30-day trial"))
{
    Console.WriteLine(glob.LastErrorText);
    return;
}

Chilkat.Compression compression = new Chilkat.Compression();

bool success = compression.CompressFile("<srcPath>", "<destPath>");
if (!success)
{
    Console.WriteLine(compression.LastErrorText);   // full diagnostic of what went wrong
    return;
}
```

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `public string DebugLogFilePath {get; set; }` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `public string LastErrorHtml {get; }` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `public string LastErrorText {get; }` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `public string LastErrorXml {get; }` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `public bool LastMethodSuccess {get; set; }` | read/write | Indicates the success or failure of the most recent method call: `true` means success, `false` means failure. |
| `VerboseLogging` | `public bool VerboseLogging {get; set; }` | read/write | If set to `true`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `public string Version {get; }` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Algorithm` | property, read/write | `public string Algorithm {get; set; }` |
| `Charset` | property, read/write | `public string Charset {get; set; }` |
| `DeflateLevel` | property, read/write | `public int DeflateLevel {get; set; }` |
| `EncodingMode` | property, read/write | `public string EncodingMode {get; set; }` |
| `FirstChunk` | property, read/write | `public bool FirstChunk {get; set; }` |
| `HeartbeatMs` | property, read/write | `public int HeartbeatMs {get; set; }` |
| `LastChunk` | property, read/write | `public bool LastChunk {get; set; }` |
| `UncommonOptions` | property, read/write | `public string UncommonOptions {get; set; }` |
| `CompressBd` | method | `public bool CompressBd(BinData bd);` |
| `CompressBd2` | method | `public bool CompressBd2(BinData bdIn, BinData bdOut);` |
| `CompressBytes` | method | `public byte[] CompressBytes(byte[] data);` |
| `CompressBytesENC` | method | `public string CompressBytesENC(byte[] data);` |
| `CompressEncryptFile` | method | `public bool CompressEncryptFile(JsonObject cryptParams, string srcPath, string destPath);` |
| `CompressFile` | method | `public bool CompressFile(string srcPath, string destPath);` |
| `CompressSb` | method | `public bool CompressSb(StringBuilder sb, BinData binData);` |
| `CompressStr` | method | `public bool CompressStr(string str, BinData bd);` |
| `CompressStream` | method | `public bool CompressStream(Stream strm);` |
| `CompressString` | method | `public byte[] CompressString(string str);` |
| `CompressStringENC` | method | `public string CompressStringENC(string str);` |
| `DecompressBd` | method | `public bool DecompressBd(BinData bd);` |
| `DecompressBd2` | method | `public bool DecompressBd2(BinData bdIn, BinData bdOut);` |
| `DecompressBytes` | method | `public byte[] DecompressBytes(byte[] data);` |
| `DecompressBytesENC` | method | `public byte[] DecompressBytesENC(string encodedCompressedData);` |
| `DecompressFile` | method | `public bool DecompressFile(string srcPath, string destPath);` |
| `DecompressSb` | method | `public bool DecompressSb(BinData binData, StringBuilder sb);` |
| `DecompressStream` | method | `public bool DecompressStream(Stream strm);` |
| `DecompressString` | method | `public string DecompressString(byte[] data);` |
| `DecompressStringENC` | method | `public string DecompressStringENC(string encodedCompressedData);` |
| `DecryptDecompressFile` | method | `public bool DecryptDecompressFile(JsonObject cryptParams, string srcPath, string destPath);` |
| `LoadTaskCaller` | method | `public bool LoadTaskCaller(Task task);` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### Compression.Algorithm

`Chilkat 11.7.0 · csharp · Compression · Algorithm · property · read/write`

```csharp
public string Algorithm {get; set; }
```

Specifies the compression algorithm to use. Supported values are `deflate`, `zlib`, `gzip`, `bzip2`, and `lzw`.

The `zlib` option is the deflate algorithm with a zlib header.

The `gzip` option (starting in v11.7.0) is the deflate algorithm in the gzip format (RFC 1952): a gzip header, the deflate data, and a trailer with the CRC-32 and size of the uncompressed data. When decompressing in one call, the CRC-32 and size are checked. Before v11.7.0, `gzip` was not recognized and was treated as `deflate`.

**Note:** `ppmd` is deprecated and should not be used. It was only available on 32-bit systems and specifically used the J variant. New applications should use one of the supported algorithms listed above.

### Compression.Charset

`Chilkat 11.7.0 · csharp · Compression · Charset · property · read/write`

```csharp
public string Charset {get; set; }
```

**Full documentation for this property (same in every language):** [How Character Encoding (Charset) Affects Compression and Decompression](https://www.chilkatsoft.com/ai-docs/v/11.7.0/articles/how_charset_affects_compression.md) · [Full List of Character Encodings Supported by Chilkat](https://www.chilkatsoft.com/ai-docs/v/11.7.0/articles/charsets_supported_by_chilkat.md)

Specifies the character encoding used when converting text to bytes before compression, and bytes back to text after decompression.

The current default is the computer’s ANSI charset, such as Windows-1252 on many Western Windows systems. However, most modern applications should explicitly set this property to `utf-8`.

**Recommendation:** Set `Charset = "utf-8"` unless you specifically need compatibility with another encoding.

### Compression.DeflateLevel

`Chilkat 11.7.0 · csharp · Compression · DeflateLevel · property · read/write · since 9.5.0.73`

```csharp
public int DeflateLevel {get; set; }
```

Sets the compression level used by the `deflate` and `zlib` algorithms.

- `0` means no compression.
- `9` means maximum compression.
- The default value is `6`.

Higher values may produce smaller output but can require more processing time.

### Compression.EncodingMode

`Chilkat 11.7.0 · csharp · Compression · EncodingMode · property · read/write`

```csharp
public string EncodingMode {get; set; }
```

**Full documentation for this property (same in every language):** [Binary Encodings Supported by Chilkat](https://www.chilkatsoft.com/ai-docs/v/11.7.0/articles/binary_encodings.md)

Specifies the text encoding used by methods whose names end in `ENC`, such as `CompressBytesENC` and `DecompressStringENC`.

Compression methods ending in `ENC` return compressed binary data as an encoded string. Decompression methods ending in `ENC` expect the input string to use this same encoding.

Valid values include:

- `base64`
- `hex`
- `url`
- `quoted-printable`

### Compression.FirstChunk

`Chilkat 11.7.0 · csharp · Compression · FirstChunk · property · read/write · since 11.0.0`

```csharp
public bool FirstChunk {get; set; }
```

Indicates that the next chunk-aware compression or decompression call is the first chunk in a sequence.

The default value is `true`.

When both `FirstChunk` and `LastChunk` are `true`, the method call is treated as a complete, single-call compression or decompression operation.

### Compression.HeartbeatMs

`Chilkat 11.7.0 · csharp · Compression · HeartbeatMs · property · read/write`

```csharp
public int HeartbeatMs {get; set; }
```

**Full documentation for this property (same in every language):** [Event Callback Examples](https://www.chilkatsoft.com/ai-docs/v/11.7.0/articles/event_callback_examples.md)

Specifies the interval, in milliseconds, between `AbortCheck` event callbacks.

This allows an application to periodically check whether a long-running operation should be aborted.

The default value is `0`, which disables `AbortCheck` callbacks.

### Compression.LastChunk

`Chilkat 11.7.0 · csharp · Compression · LastChunk · property · read/write · since 11.0.0`

```csharp
public bool LastChunk {get; set; }
```

Indicates that the next chunk-aware compression or decompression call is the final chunk in a sequence.

The default value is `true`.

When both `FirstChunk` and `LastChunk` are `true`, the input is treated as the complete data set and processed in a single call.

### Compression.UncommonOptions

`Chilkat 11.7.0 · csharp · Compression · UncommonOptions · property · read/write · since 11.0.0`

```csharp
public string UncommonOptions {get; set; }
```

Provides a way to enable specialized or uncommon behavior. This property normally remains empty.

It may be set to a comma-separated list of keywords.

Supported option:

- `Crypt2CompressHdr` — Duplicates the compression/decompression header behavior used by the deprecated and removed Crypt2 compression functions.

## Methods

### Compression.CompressBd

`Chilkat 11.7.0 · csharp · Compression · CompressBd · method · since 9.5.0.66`

```csharp
public bool CompressBd(BinData bd);
```

Compresses the data contained in a `BinData` object.

The `BinData` object is modified to contain the compressed result.

This method is not `FirstChunk` / `LastChunk` aware.

Returns true for success, false for failure.

Async variant: `CompressBdAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressBd2

`Chilkat 11.7.0 · csharp · Compression · CompressBd2 · method · since 11.0.0`

```csharp
public bool CompressBd2(BinData bdIn, BinData bdOut);
```

Compresses the data in one `BinData` object and appends the compressed output to another `BinData` object.

The input `BinData` is not modified.

This method is `FirstChunk` / `LastChunk` aware.

Returns true for success, false for failure.

Async variant: `CompressBd2Async` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressBytes

`Chilkat 11.7.0 · csharp · Compression · CompressBytes · method`

```csharp
public byte[] CompressBytes(byte[] data);
```

Compresses a byte array and returns the compressed bytes.

This method is `FirstChunk` / `LastChunk` aware.

Returns an empty byte array on failure

Async variant: `CompressBytesAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressBytesENC

`Chilkat 11.7.0 · csharp · Compression · CompressBytesENC · method`

```csharp
public string CompressBytesENC(byte[] data);
```

Compresses a byte array and returns the compressed result as an encoded string.

The output encoding is controlled by `EncodingMode`.

This method is not `FirstChunk` / `LastChunk` aware.

Returns `null` on failure

Async variant: `CompressBytesENCAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressEncryptFile

`Chilkat 11.7.0 · csharp · Compression · CompressEncryptFile · method · since 9.5.0.99`

```csharp
public bool CompressEncryptFile(JsonObject cryptParams, string srcPath, string destPath);
```

Compresses and encrypts a file, writing the result to a destination file.

The compression and encryption are performed internally in streaming mode, so files of any size can be processed without loading the entire file into memory.

Returns true for success, false for failure.

Async variant: `CompressEncryptFileAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressFile

`Chilkat 11.7.0 · csharp · Compression · CompressFile · method`

```csharp
public bool CompressFile(string srcPath, string destPath);
```

Compresses a source file and writes the compressed data to a destination file.

The file is processed internally in streaming mode, allowing files of any size to be compressed with stable memory usage.

Returns true for success, false for failure.

Async variant: `CompressFileAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressSb

`Chilkat 11.7.0 · csharp · Compression · CompressSb · method · since 9.5.0.73`

```csharp
public bool CompressSb(StringBuilder sb, BinData binData);
```

Compresses the text contained in a `StringBuilder` and appends the compressed bytes to a `BinData` object.

Text is converted to bytes according to the `Charset` property.

This method is `FirstChunk` / `LastChunk` aware.

Returns true for success, false for failure.

Async variant: `CompressSbAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressStr

`Chilkat 11.7.0 · csharp · Compression · CompressStr · method · since 11.0.0`

```csharp
public bool CompressStr(string str, BinData bd);
```

Compresses a string and appends the compressed bytes to a `BinData` object.

The string is converted to bytes using the charset specified by the `Charset` property.

This method is `FirstChunk` / `LastChunk` aware.

Returns true for success, false for failure.

Async variant: `CompressStrAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressStream

`Chilkat 11.7.0 · csharp · Compression · CompressStream · method · since 9.5.0.56`

```csharp
public bool CompressStream(Stream strm);
```

Compresses data from a stream source and writes the compressed data to the stream sink.

The operation is performed in streaming mode, making it suitable for very large or even continuous streams while maintaining stable memory usage.

Returns true for success, false for failure.

Async variant: `CompressStreamAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressString

`Chilkat 11.7.0 · csharp · Compression · CompressString · method`

```csharp
public byte[] CompressString(string str);
```

Compresses a string and returns the compressed bytes.

The string is converted to bytes using the `Charset` property.

This method is `FirstChunk` / `LastChunk` aware.

Returns an empty byte array on failure

Async variant: `CompressStringAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.CompressStringENC

`Chilkat 11.7.0 · csharp · Compression · CompressStringENC · method`

```csharp
public string CompressStringENC(string str);
```

Compresses a string and returns the compressed result as an encoded string.

The string is first converted to bytes using `Charset`, then compressed, and finally encoded according to `EncodingMode`.

This method is not `FirstChunk` / `LastChunk` aware.

Returns `null` on failure

Async variant: `CompressStringENCAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecompressBd

`Chilkat 11.7.0 · csharp · Compression · DecompressBd · method · since 9.5.0.66`

```csharp
public bool DecompressBd(BinData bd);
```

Decompresses the compressed data contained in a `BinData` object.

The `BinData` object is modified to contain the decompressed result.

This method is not `FirstChunk` / `LastChunk` aware.

Returns true for success, false for failure.

Async variant: `DecompressBdAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecompressBd2

`Chilkat 11.7.0 · csharp · Compression · DecompressBd2 · method · since 11.0.0`

```csharp
public bool DecompressBd2(BinData bdIn, BinData bdOut);
```

Decompresses the data in one `BinData` object and appends the decompressed output to another `BinData` object.

The input `BinData` is not modified.

This method is `FirstChunk` / `LastChunk` aware.

Returns true for success, false for failure.

Async variant: `DecompressBd2Async` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecompressBytes

`Chilkat 11.7.0 · csharp · Compression · DecompressBytes · method`

```csharp
public byte[] DecompressBytes(byte[] data);
```

Decompresses compressed byte data and returns the decompressed bytes.

This method is `FirstChunk` / `LastChunk` aware.

Returns an empty byte array on failure

Async variant: `DecompressBytesAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecompressBytesENC

`Chilkat 11.7.0 · csharp · Compression · DecompressBytesENC · method`

```csharp
public byte[] DecompressBytesENC(string encodedCompressedData);
```

Decompresses compressed data supplied as an encoded string and returns the decompressed bytes.

The input string is decoded according to `EncodingMode` before being decompressed.

Returns an empty byte array on failure

Async variant: `DecompressBytesENCAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecompressFile

`Chilkat 11.7.0 · csharp · Compression · DecompressFile · method`

```csharp
public bool DecompressFile(string srcPath, string destPath);
```

Decompresses a source file and writes the decompressed data to a destination file.

The file is processed internally in streaming mode, allowing files of any size to be decompressed without loading the entire file into memory.

Returns true for success, false for failure.

Async variant: `DecompressFileAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecompressSb

`Chilkat 11.7.0 · csharp · Compression · DecompressSb · method · since 9.5.0.73`

```csharp
public bool DecompressSb(BinData binData, StringBuilder sb);
```

Decompresses compressed data from a `BinData` object and appends the resulting text to a `StringBuilder`.

The decompressed bytes are converted to text using the `Charset` property.

This method is `FirstChunk` / `LastChunk` aware.

Returns true for success, false for failure.

Async variant: `DecompressSbAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecompressStream

`Chilkat 11.7.0 · csharp · Compression · DecompressStream · method · since 9.5.0.56`

```csharp
public bool DecompressStream(Stream strm);
```

Decompresses data from a stream source and writes the decompressed data to the stream sink.

The operation is performed in streaming mode, making it suitable for very large or continuous streams while maintaining stable memory usage.

Returns true for success, false for failure.

Async variant: `DecompressStreamAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecompressString

`Chilkat 11.7.0 · csharp · Compression · DecompressString · method`

```csharp
public string DecompressString(byte[] data);
```

Decompresses compressed byte data and returns the resulting string.

The decompressed bytes are converted to text using the `Charset` property.

This method is `FirstChunk` / `LastChunk` aware.

Returns `null` on failure

### Compression.DecompressStringENC

`Chilkat 11.7.0 · csharp · Compression · DecompressStringENC · method`

```csharp
public string DecompressStringENC(string encodedCompressedData);
```

Decompresses compressed data supplied as an encoded string and returns the resulting text.

The input string is decoded according to `EncodingMode`, then decompressed. The resulting bytes are converted to text using `Charset`.

This method is not `FirstChunk` / `LastChunk` aware.

Returns `null` on failure

Async variant: `DecompressStringENCAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.DecryptDecompressFile

`Chilkat 11.7.0 · csharp · Compression · DecryptDecompressFile · method · since 9.5.0.99`

```csharp
public bool DecryptDecompressFile(JsonObject cryptParams, string srcPath, string destPath);
```

Decrypts and decompresses a file, writing the restored data to a destination file.

This is the reverse operation of `CompressEncryptFile`.

Returns true for success, false for failure.

Async variant: `DecryptDecompressFileAsync` — same arguments, returns a `Task` (see Async variants below).

### Compression.LoadTaskCaller

`Chilkat 11.7.0 · csharp · Compression · LoadTaskCaller · method · since 9.5.0.80`

```csharp
public bool LoadTaskCaller(Task task);
```

Loads the caller of the task's async method.

Returns true for success, false for failure.

## Events and callbacks

### Compression.AbortCheck (event)

`Chilkat 11.7.0 · csharp · Compression · AbortCheck · event`

```csharp
public event AbortCheckEventHandler OnAbortCheck;
```

Enables a method call to be aborted by triggering the AbortCheck event at intervals defined by the `HeartbeatMs` property. If HeartbeatMs is set to its default value of 0, no events will occur. For instance, set HeartbeatMs to 200 to trigger 5 AbortCheck events per second.

### Chilkat .NET Framework Event Implementation

Args are passed using Chilkat.AbortCheckEventArgs

**Event callback implementation:**

```csharp
private void compression_OnAbortCheck(object sender, Chilkat.AbortCheckEventArgs args)
	{
	    // application code goes here.
	}
```

**To add an event handler:**

```csharp
Chilkat.Compression compression = new Chilkat.Compression();
compression.OnAbortCheck += compression_OnAbortCheck;
```

### Chilkat .NET Core Event Implementation

**Event callback implementation:**

```csharp
public void handleAbortCheck(out bool abort)
	{
	    // application code goes here.
	}
```

**To add an event handler:**

```csharp
Chilkat.Compression compression = new Chilkat.Compression();
// ...
Chilkat.Compression.AbortCheck abortCheck = new Chilkat.Compression.AbortCheck(handleAbortCheck);
compression.setAbortCheckCb(abortCheck);
```

### Compression.PercentDone (event)

`Chilkat 11.7.0 · csharp · Compression · PercentDone · event`

```csharp
public event PercentDoneEventHandler OnPercentDone;
```

This provides the percentage completion for any method involving network communications or time-consuming processing, assuming the progress can be measured as a percentage. This event is triggered only when it's possible and logical to express the operation's progress as a percentage. The `pctDone` argument will range from 1 to 100. For methods that finish quickly, the number of PercentDone callbacks may vary, but the final callback will have `pctDone` equal to 100. For longer operations, callbacks will not exceed one per percentage point (e.g., 1, 2, 3, ..., 98, 99, 100).

The PercentDone callback also acts as an `AbortCheck` event. For fast methods where PercentDone fires, an AbortCheck event may not trigger since the PercentDone callback already provides an opportunity to abort. For longer operations, where time between PercentDone callbacks is extended, AbortCheck callbacks enable more responsive operation termination.

To abort the operation, set the `abort` output argument to `true`. This will cause the method to terminate and return a failure status or corresponding failure value.

### Chilkat .NET Framework Event Implementation

Args are passed using Chilkat.PercentDoneEventArgs

**Event callback implementation:**

```csharp
private void compression_OnPercentDone(object sender, Chilkat.PercentDoneEventArgs args)
	{
	    // application code goes here.
	}
```

**To add an event handler:**

```csharp
Chilkat.Compression compression = new Chilkat.Compression();
compression.OnPercentDone += compression_OnPercentDone;
```

### Chilkat .NET Core Event Implementation

**Event callback implementation:**

```csharp
public void handlePercentDone(int pctDone, out bool abort)
	{
	    // application code goes here.
	}
```

**To add an event handler:**

```csharp
Chilkat.Compression compression = new Chilkat.Compression();
// ...
Chilkat.Compression.PercentDone percentDone = new Chilkat.Compression.PercentDone(handlePercentDone);
compression.setPercentDoneCb(percentDone);
```

### Compression.ProgressInfo (event)

`Chilkat 11.7.0 · csharp · Compression · ProgressInfo · event`

```csharp
public event ProgressInfoEventHandler OnProgressInfo;
```

This event callback provides `tag name`/value pairs that detail what occurs during a method call. To discover existing tag names, create code to handle the event, emit the pairs, and review them. Most tag names are self-explanatory.

Note: Some Chilkat methods don't fire any ProgressInfo events.

### Chilkat .NET Framework Event Implementation

Args are passed using Chilkat.ProgressInfoEventArgs

**Event callback implementation:**

```csharp
private void compression_OnProgressInfo(object sender, Chilkat.ProgressInfoEventArgs args)
	{
	    // application code goes here.
	}
```

**To add an event handler:**

```csharp
Chilkat.Compression compression = new Chilkat.Compression();
compression.OnProgressInfo += compression_OnProgressInfo;
```

### Chilkat .NET Core Event Implementation

**Event callback implementation:**

```csharp
public void handleProgressInfo(string name, string value)
	{
	    // application code goes here.
	}
```

**To add an event handler:**

```csharp
Chilkat.Compression compression = new Chilkat.Compression();
// ...
Chilkat.Compression.ProgressInfo progressInfo = new Chilkat.Compression.ProgressInfo(handleProgressInfo);
compression.setProgressInfoCb(progressInfo);
```

### Compression.TaskCompleted (event)

`Chilkat 11.7.0 · csharp · Compression · TaskCompleted · event`

```csharp
public event TaskCompletedEventHandler OnTaskCompleted;
```

Called from the background thread when an asynchronous task completes.

### Chilkat .NET Framework Event Implementation

Args are passed using Chilkat.TaskCompletedEventArgs

**Event callback implementation:**

```csharp
private void compression_OnTaskCompleted(object sender, Chilkat.TaskCompletedEventArgs args)
	{
	    // application code goes here.
	}
```

**To add an event handler:**

```csharp
Chilkat.Compression compression = new Chilkat.Compression();
compression.OnTaskCompleted += compression_OnTaskCompleted;
```

### Chilkat .NET Core Event Implementation

**Event callback implementation:**

```csharp
public void handleTaskIdCompleted(int taskId)
	{
	    // application code goes here.
	}
```

**To add an event handler:**

```csharp
Chilkat.Compression compression = new Chilkat.Compression();
// ...
Chilkat.Compression.TaskIdCompleted taskIdCompleted = new Chilkat.Compression.TaskIdCompleted(handleTaskIdCompleted);
compression.setTaskIdCompletedCb(taskIdCompleted);
```

## Async variants

Each returns a `Task` instead of the result and takes the same arguments as the synchronous method; run the task, wait for `Finished`, then read the result from the task. No new Async methods are added from 11.7.0 on.

```csharp
public Task CompressBdAsync(BinData bd);
public Task CompressBd2Async(BinData bdIn, BinData bdOut);
public Task CompressBytesAsync(byte[] data);
public Task CompressBytesENCAsync(byte[] data);
public Task CompressEncryptFileAsync(JsonObject cryptParams, string srcPath, string destPath);
public Task CompressFileAsync(string srcPath, string destPath);
public Task CompressSbAsync(StringBuilder sb, BinData binData);
public Task CompressStrAsync(string str, BinData bd);
public Task CompressStreamAsync(Stream strm);
public Task CompressStringAsync(string str);
public Task CompressStringENCAsync(string str);
public Task DecompressBdAsync(BinData bd);
public Task DecompressBd2Async(BinData bdIn, BinData bdOut);
public Task DecompressBytesAsync(byte[] data);
public Task DecompressBytesENCAsync(string encodedCompressedData);
public Task DecompressFileAsync(string srcPath, string destPath);
public Task DecompressSbAsync(BinData binData, StringBuilder sb);
public Task DecompressStreamAsync(Stream strm);
public Task DecompressStringENCAsync(string encodedCompressedData);
public Task DecryptDecompressFileAsync(JsonObject cryptParams, string srcPath, string destPath);
```

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `BeginCompressBytes` | method | before 11.6.1 | `FirstChunk` |
| `BeginCompressBytesENC` | method | before 11.6.1 | — |
| `BeginCompressString` | method | before 11.6.1 | `FirstChunk` |
| `BeginCompressStringENC` | method | before 11.6.1 | `FirstChunk` |
| `BeginDecompressBytes` | method | before 11.6.1 | `FirstChunk` |
| `BeginDecompressBytesENC` | method | before 11.6.1 | `FirstChunk` |
| `BeginDecompressString` | method | before 11.6.1 | `FirstChunk` |
| `BeginDecompressStringENC` | method | before 11.6.1 | `FirstChunk` |
| `EndCompressBytes` | method | before 11.6.1 | — |
| `EndCompressBytesENC` | method | before 11.6.1 | — |
| `EndCompressString` | method | before 11.6.1 | — |
| `EndCompressStringENC` | method | before 11.6.1 | — |
| `EndDecompressBytes` | method | before 11.6.1 | — |
| `EndDecompressBytesENC` | method | before 11.6.1 | — |
| `EndDecompressString` | method | before 11.6.1 | — |
| `EndDecompressStringENC` | method | before 11.6.1 | — |
| `MoreCompressBytes` | method | before 11.6.1 | — |
| `MoreCompressBytesENC` | method | before 11.6.1 | — |
| `MoreCompressString` | method | before 11.6.1 | — |
| `MoreCompressStringENC` | method | before 11.6.1 | — |
| `MoreDecompressBytes` | method | before 11.6.1 | — |
| `MoreDecompressBytesENC` | method | before 11.6.1 | — |
| `MoreDecompressString` | method | before 11.6.1 | — |
| `MoreDecompressStringENC` | method | before 11.6.1 | — |

## Related classes

[`BinData`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/BinData.md), [`JsonObject`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/JsonObject.md), [`Stream`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/Stream.md), [`StringBuilder`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/StringBuilder.md), [`Task`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/Task.md)

