[
  {
    "Id": "456885",
    "ThreadId": "216419",
    "Html": "<p>Hi, I'm wondering why GZipStream and DeflateStream do not have asynchronous implementations. They're relying on the Stream.BeginXXX implementations, which are not optimal (they perform an asynchronous delegate invocation of Read).</p>\r\n<p>Is there a version that has explicit asynchronous APIs? We'd love to be able to use them in our scenario.</p>\r\n<p>Thanks!</p>",
    "PostedDate": "2010-06-17T11:56:58.167-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "456985",
    "ThreadId": "216419",
    "Html": "<p>No - you've seen the implementation. That's all there is.</p>",
    "PostedDate": "2010-06-17T15:56:34.613-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "456995",
    "ThreadId": "216419",
    "Html": "<p>Yes I have. Are there plans to create async APIs? The reason I ask is that these could be used with a backing network stream having GZIPped http traffic.</p>\r\n<p>If there aren't any plans to update the classes, I'll check other options. Otherwise, I'd wait for an update.</p>\r\n<p>&nbsp;</p>",
    "PostedDate": "2010-06-17T16:10:28.577-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "457001",
    "ThreadId": "216419",
    "Html": "<p>no, no plans to extend it with a custom async implementation.</p>\r\n<p>I'd definitely be interested in your benchmark results showing the difference.&nbsp; Also, if you build one, please do contribute it to the project.</p>\r\n<p>&nbsp;</p>",
    "PostedDate": "2010-06-17T16:25:22.643-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "1099438",
    "ThreadId": "216419",
    "Html": "I don't know, but here is a simple and inefficient implementation of read:<br />\n<pre><code>public static class ZipEx\n    {\n        public static Task&lt;ZipFile&gt; Read(string file, CancellationToken token, IProgress&lt;ReadProgressEventArgs&gt; progress)\n        {\n            var t = new TaskCompletionSource&lt;ZipFile&gt;();\n            new Thread(() =&gt;\n            {\n                using (token.Register(() =&gt; t.TrySetCanceled()))\n                {\n                    try\n                    {\n                        var opts = new ReadOptions();\n                        opts.ReadProgress = (o, e) =&gt; progress.Report(e);\n                        t.TrySetResult(ZipFile.Read(file, opts));\n                    }\n                    catch(Exception ex)\n                    {\n                        t.TrySetException(ex);\n                    }\n                }\n            }) { IsBackground = true }.Start();\n            return t.Task;\n        }\n    }</code></pre>\n\nI am going to do save and extract next.<br />\n",
    "PostedDate": "2013-09-25T17:33:35.093-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  }
]