[
  {
    "Id": "602832",
    "ThreadId": "255267",
    "Html": "<p>Hi Guys,</p>\n<p>First of all, the Library is great.</p>\n<p>Now my problem: I'm using VB.NET and I try to add files to specific folders in the ZipFile (named zip1). This adding works.</p>\n<p>I catched the Example of zipping Directory and showing Progressbars. This example works great for me.</p>\n<p>But when I change the AddDirectory-Method with a for loop and the AddItem method, the Invoke method of ProgressBar1 in the StepArchiveProgress method gets an ArgumentOutOfRangeException (\"Value is -1\").</p>\n<p>This happens when the<strong> zip1_SaveProgress</strong> gets the \"Saving_AfterWriteEntry\" Event</p>\n<p>Here is my code:</p>\n<p>&nbsp;</p>\n<div style=\"color: black; background-color: white;\">\n<pre><span style=\"color: blue;\">Imports</span> System.IO\n<span style=\"color: blue;\">Imports</span> Ionic.Zip\n<span style=\"color: blue;\">Imports</span> System.Threading\n<span style=\"color: blue;\">Imports</span> System.ComponentModel\n\n<span style=\"color: blue;\">Public</span> <span style=\"color: blue;\">Class</span> frmExport\n\n    <span style=\"color: blue;\">Private</span> _backgroundWorker1 <span style=\"color: blue;\">As</span> System.ComponentModel.BackgroundWorker\n    <span style=\"color: blue;\">Private</span> _saveCanceled <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Boolean</span>\n    <span style=\"color: blue;\">Private</span> _totalBytesAfterCompress <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Long</span>\n    <span style=\"color: blue;\">Private</span> _totalBytesBeforeCompress <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Long</span>\n    <span style=\"color: blue;\">Private</span> _nFilesCompleted <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Integer</span>\n    <span style=\"color: blue;\">Private</span> _progress2MaxFactor <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Integer</span>\n    <span style=\"color: blue;\">Private</span> _entriesToZip <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Integer</span>\n\n    <span style=\"color: blue;\">Private</span> _DirToZip <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span> = <span style=\"color: #a31515;\">\"\"</span>\n    <span style=\"color: blue;\">Private</span> _ZipToCreate <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span> = <span style=\"color: #a31515;\">\"\"</span>\n    <span style=\"color: blue;\">Private</span> _files(,) <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span>\n\n    <span style=\"color: blue;\">Private</span> modus <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Integer</span> = 0 <span style=\"color: green;\">' 0 - Files, 1 - Directory</span>\n\n    <span style=\"color: green;\">' Delegates for invocation of UI from other threads</span>\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Delegate</span> <span style=\"color: blue;\">Sub</span> SaveEntryProgress(<span style=\"color: blue;\">ByVal</span> e <span style=\"color: blue;\">As</span> SaveProgressEventArgs)\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Delegate</span> <span style=\"color: blue;\">Sub</span> ButtonClick(<span style=\"color: blue;\">ByVal</span> sender <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Object</span>, <span style=\"color: blue;\">ByVal</span> e <span style=\"color: blue;\">As</span> EventArgs)\n\n    <span style=\"color: blue;\">Public</span> <span style=\"color: blue;\">Sub</span> setFolders(<span style=\"color: blue;\">ByVal</span> folder <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span>, <span style=\"color: blue;\">ByVal</span> destination <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span>)\n        _DirToZip = folder\n        _ZipToCreate = destination\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n    <span style=\"color: blue;\">Public</span> <span style=\"color: blue;\">Sub</span> setFileList(<span style=\"color: blue;\">ByVal</span> fileList(,) <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span>, <span style=\"color: blue;\">ByVal</span> destination <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span>)\n        _ZipToCreate = destination\n        _files = fileList\n\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n\n    <span style=\"color: blue;\">Public</span> <span style=\"color: blue;\">Sub</span> Export(<span style=\"color: blue;\">ByVal</span> sender <span style=\"color: blue;\">As</span> System.Object, <span style=\"color: blue;\">ByVal</span> e <span style=\"color: blue;\">As</span> System.EventArgs) <span style=\"color: blue;\">Handles</span> <span style=\"color: blue;\">Me</span>.Load\n\n        <span style=\"color: blue;\">Select</span> <span style=\"color: blue;\">Case</span> modus\n            <span style=\"color: blue;\">Case</span> 0\n                <span style=\"color: green;\">' Files</span>\n                <span style=\"color: blue;\">Me</span>.ZipFiles()\n            <span style=\"color: blue;\">Case</span> 1\n                <span style=\"color: green;\">' Directory</span>\n                <span style=\"color: blue;\">Me</span>.ZipFolder()\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Select</span>\n\n\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> ZipFiles()\n        <span style=\"color: blue;\">If</span> ((<span style=\"color: blue;\">Not</span> _ZipToCreate <span style=\"color: blue;\">Is</span> <span style=\"color: blue;\">Nothing</span>) <span style=\"color: blue;\">AndAlso</span> (_ZipToCreate &lt;&gt; <span style=\"color: #a31515;\">\"\"</span>)) <span style=\"color: blue;\">Then</span>\n            <span style=\"color: blue;\">If</span> File.Exists(_ZipToCreate) <span style=\"color: blue;\">Then</span>\n                <span style=\"color: blue;\">If</span> (MessageBox.Show(<span style=\"color: blue;\">String</span>.Format(<span style=\"color: #a31515;\">\"The file you have specified ({0}) already exists.  Do you want to overwrite this file?\"</span>, _\n                                                  _ZipToCreate), <span style=\"color: #a31515;\">\"Confirmation is Required\"</span>, _\n                                                  MessageBoxButtons.YesNo, MessageBoxIcon.Question) &lt;&gt; DialogResult.Yes) <span style=\"color: blue;\">Then</span>\n                    <span style=\"color: blue;\">Return</span>\n                <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n                File.Delete(_ZipToCreate)\n            <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n            <span style=\"color: blue;\">Me</span>._saveCanceled = <span style=\"color: blue;\">False</span>\n            <span style=\"color: blue;\">Me</span>._nFilesCompleted = 0\n            <span style=\"color: blue;\">Me</span>._totalBytesAfterCompress = 0\n            <span style=\"color: blue;\">Me</span>._totalBytesBeforeCompress = 0\n            <span style=\"color: blue;\">Me</span>.btnCancel.Enabled = <span style=\"color: blue;\">True</span>\n            <span style=\"color: blue;\">Me</span>.lblStatus.Text = <span style=\"color: #a31515;\">\"Zipping...\"</span>\n            <span style=\"color: blue;\">Dim</span> options <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">New</span> WorkerOptions\n            options.ZipName = _ZipToCreate\n\n            _backgroundWorker1 = <span style=\"color: blue;\">New</span> System.ComponentModel.BackgroundWorker()\n            _backgroundWorker1.WorkerSupportsCancellation = <span style=\"color: blue;\">False</span>\n            _backgroundWorker1.WorkerReportsProgress = <span style=\"color: blue;\">False</span>\n            <span style=\"color: blue;\">AddHandler</span> <span style=\"color: blue;\">Me</span>._backgroundWorker1.DoWork, <span style=\"color: blue;\">New</span> DoWorkEventHandler(<span style=\"color: blue;\">AddressOf</span> <span style=\"color: blue;\">Me</span>.DoSave)\n            _backgroundWorker1.RunWorkerAsync(options)\n\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> ZipFolder()\n        <span style=\"color: blue;\">Try</span>\n            <span style=\"color: blue;\">Dim</span> folderName <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span> = _DirToZip\n            <span style=\"color: blue;\">If</span> (((<span style=\"color: blue;\">Not</span> folderName <span style=\"color: blue;\">Is</span> <span style=\"color: blue;\">Nothing</span>) <span style=\"color: blue;\">AndAlso</span> (folderName &lt;&gt; <span style=\"color: #a31515;\">\"\"</span>)) <span style=\"color: blue;\">AndAlso</span> ((<span style=\"color: blue;\">Not</span> _ZipToCreate <span style=\"color: blue;\">Is</span> <span style=\"color: blue;\">Nothing</span>) <span style=\"color: blue;\">AndAlso</span> (_ZipToCreate &lt;&gt; <span style=\"color: #a31515;\">\"\"</span>))) <span style=\"color: blue;\">Then</span>\n                <span style=\"color: blue;\">If</span> File.Exists(_ZipToCreate) <span style=\"color: blue;\">Then</span>\n                    <span style=\"color: blue;\">If</span> (MessageBox.Show(<span style=\"color: blue;\">String</span>.Format(<span style=\"color: #a31515;\">\"The file you have specified ({0}) already exists.  Do you want to overwrite this file?\"</span>, _\n                                                      _ZipToCreate), <span style=\"color: #a31515;\">\"Confirmation is Required\"</span>, _\n                                                      MessageBoxButtons.YesNo, MessageBoxIcon.Question) &lt;&gt; DialogResult.Yes) <span style=\"color: blue;\">Then</span>\n                        <span style=\"color: blue;\">Return</span>\n                    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n                    File.Delete(_ZipToCreate)\n                <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n                <span style=\"color: blue;\">Me</span>._saveCanceled = <span style=\"color: blue;\">False</span>\n                <span style=\"color: blue;\">Me</span>._nFilesCompleted = 0\n                <span style=\"color: blue;\">Me</span>._totalBytesAfterCompress = 0\n                <span style=\"color: blue;\">Me</span>._totalBytesBeforeCompress = 0\n                <span style=\"color: blue;\">Me</span>.btnCancel.Enabled = <span style=\"color: blue;\">True</span>\n                <span style=\"color: blue;\">Me</span>.lblStatus.Text = <span style=\"color: #a31515;\">\"Zipping...\"</span>\n                <span style=\"color: blue;\">Dim</span> options <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">New</span> WorkerOptions\n                options.ZipName = _ZipToCreate\n                options.Folder = folderName\n\n                _backgroundWorker1 = <span style=\"color: blue;\">New</span> System.ComponentModel.BackgroundWorker()\n                _backgroundWorker1.WorkerSupportsCancellation = <span style=\"color: blue;\">False</span>\n                _backgroundWorker1.WorkerReportsProgress = <span style=\"color: blue;\">False</span>\n                <span style=\"color: blue;\">AddHandler</span> <span style=\"color: blue;\">Me</span>._backgroundWorker1.DoWork, <span style=\"color: blue;\">New</span> DoWorkEventHandler(<span style=\"color: blue;\">AddressOf</span> <span style=\"color: blue;\">Me</span>.DoSave)\n                _backgroundWorker1.RunWorkerAsync(options)\n\n            <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n        <span style=\"color: blue;\">Catch</span> ex <span style=\"color: blue;\">As</span> Exception\n\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Try</span>\n        \n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> DoSave(<span style=\"color: blue;\">ByVal</span> sender <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Object</span>, <span style=\"color: blue;\">ByVal</span> e <span style=\"color: blue;\">As</span> DoWorkEventArgs)\n        <span style=\"color: blue;\">Dim</span> options <span style=\"color: blue;\">As</span> WorkerOptions = e.Argument\n        <span style=\"color: blue;\">Try</span>\n            <span style=\"color: blue;\">Using</span> zip1 <span style=\"color: blue;\">As</span> ZipFile = <span style=\"color: blue;\">New</span> ZipFile\n                <span style=\"color: blue;\">Select</span> <span style=\"color: blue;\">Case</span> modus\n                    <span style=\"color: blue;\">Case</span> 0\n                        <span style=\"color: green;\">' Files to add to current Project</span>\n\n                        <span style=\"color: blue;\">Dim</span> i <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Integer</span>\n                        <span style=\"color: blue;\">For</span> i = 0 <span style=\"color: blue;\">To</span> _files.GetUpperBound(0)\n                            <span style=\"color: green;\">' will add Files or Dirs, recursing and flattening subdirectories.</span>\n                            zip1.AddItem(_files(i, 1), _files(i, 0))\n                        <span style=\"color: blue;\">Next</span> i\n                    <span style=\"color: blue;\">Case</span> 1\n                        <span style=\"color: green;\">' Directory</span>\n                        zip1.AddDirectory(options.Folder)\n                <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Select</span>\n                \n                <span style=\"color: blue;\">Me</span>._entriesToZip = zip1.EntryFileNames.<span style=\"color: blue;\">Count</span>\n                <span style=\"color: blue;\">Me</span>.SetProgressBars()\n                <span style=\"color: blue;\">AddHandler</span> zip1.SaveProgress, <span style=\"color: blue;\">New</span> EventHandler(Of SaveProgressEventArgs)(<span style=\"color: blue;\">AddressOf</span> <span style=\"color: blue;\">Me</span>.zip1_SaveProgress)\n                zip1.Save(options.ZipName)\n            <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Using</span>\n        <span style=\"color: blue;\">Catch</span> exc1 <span style=\"color: blue;\">As</span> Exception\n            MessageBox.Show(<span style=\"color: blue;\">String</span>.Format(<span style=\"color: #a31515;\">\"Exception while zipping: {0}\"</span>, exc1.Message))\n            <span style=\"color: blue;\">Me</span>.btnCancel_Click(<span style=\"color: blue;\">Nothing</span>, <span style=\"color: blue;\">Nothing</span>)\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Try</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> zip1_SaveProgress(<span style=\"color: blue;\">ByVal</span> sender <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Object</span>, <span style=\"color: blue;\">ByVal</span> e <span style=\"color: blue;\">As</span> SaveProgressEventArgs)\n        <span style=\"color: blue;\">If</span> <span style=\"color: blue;\">Me</span>._saveCanceled <span style=\"color: blue;\">Then</span>\n            e.Cancel = <span style=\"color: blue;\">True</span>\n            <span style=\"color: blue;\">Return</span>\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n\n        <span style=\"color: blue;\">Select</span> <span style=\"color: blue;\">Case</span> e.EventType\n            <span style=\"color: blue;\">Case</span> ZipProgressEventType.Saving_AfterWriteEntry\n                <span style=\"color: blue;\">Me</span>.StepArchiveProgress(e)\n                <span style=\"color: blue;\">Exit</span> <span style=\"color: blue;\">Select</span>\n            <span style=\"color: blue;\">Case</span> ZipProgressEventType.Saving_Completed\n                <span style=\"color: blue;\">Me</span>.SaveCompleted()\n                <span style=\"color: blue;\">Exit</span> <span style=\"color: blue;\">Select</span>\n            <span style=\"color: blue;\">Case</span> ZipProgressEventType.Saving_EntryBytesRead\n                <span style=\"color: blue;\">Me</span>.StepEntryProgress(e)\n                <span style=\"color: blue;\">Exit</span> <span style=\"color: blue;\">Select</span>\n            <span style=\"color: blue;\">Case</span> <span style=\"color: blue;\">Else</span>\n                MsgBox(<span style=\"color: blue;\">Me</span>.ProgressBar1.Value)\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Select</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> StepArchiveProgress(<span style=\"color: blue;\">ByVal</span> e <span style=\"color: blue;\">As</span> SaveProgressEventArgs)\n        <span style=\"color: blue;\">If</span> <span style=\"color: blue;\">Me</span>.ProgressBar1.InvokeRequired <span style=\"color: blue;\">Then</span>\n            <span style=\"color: blue;\">Me</span>.ProgressBar1.Invoke(<span style=\"color: blue;\">New</span> SaveEntryProgress(<span style=\"color: blue;\">AddressOf</span> <span style=\"color: blue;\">Me</span>.StepArchiveProgress), <span style=\"color: blue;\">New</span> <span style=\"color: blue;\">Object</span>() {e})\n        <span style=\"color: blue;\">ElseIf</span> <span style=\"color: blue;\">Not</span> <span style=\"color: blue;\">Me</span>._saveCanceled <span style=\"color: blue;\">Then</span>\n            <span style=\"color: blue;\">Me</span>._nFilesCompleted += 1\n            <span style=\"color: blue;\">Me</span>.ProgressBar1.PerformStep()\n            <span style=\"color: blue;\">Me</span>._totalBytesAfterCompress = (<span style=\"color: blue;\">Me</span>._totalBytesAfterCompress + e.CurrentEntry.CompressedSize)\n            <span style=\"color: blue;\">Me</span>._totalBytesBeforeCompress = (<span style=\"color: blue;\">Me</span>._totalBytesBeforeCompress + e.CurrentEntry.UncompressedSize)\n            <span style=\"color: green;\">' progressBar2 is the one dealing with the item being added to the archive</span>\n            <span style=\"color: green;\">' if we got this event, then the add of that item (or file) is complete, so we </span>\n            <span style=\"color: green;\">' update the progressBar2 appropriately.</span>\n            <span style=\"color: blue;\">Me</span>.ProgressBar2.Value = <span style=\"color: blue;\">Me</span>.ProgressBar2.Maximum = 1\n            <span style=\"color: blue;\">MyBase</span>.Update()\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> SaveCompleted()\n        <span style=\"color: blue;\">If</span> <span style=\"color: blue;\">Me</span>.lblStatus.InvokeRequired <span style=\"color: blue;\">Then</span>\n            <span style=\"color: blue;\">Me</span>.lblStatus.Invoke(<span style=\"color: blue;\">New</span> MethodInvoker(<span style=\"color: blue;\">AddressOf</span> SaveCompleted))\n            <span style=\"color: green;\">'Me.lblStatus.Invoke(New MethodInvoker(Me, DirectCast(Me.SaveCompleted, IntPtr)))</span>\n        <span style=\"color: blue;\">Else</span>\n            <span style=\"color: blue;\">Me</span>.lblStatus.Text = <span style=\"color: blue;\">String</span>.Format(<span style=\"color: #a31515;\">\"Done, Compressed {0} files, {1:N0}% of original\"</span>, <span style=\"color: blue;\">Me</span>._nFilesCompleted, ((100 * <span style=\"color: blue;\">Me</span>._totalBytesAfterCompress) / <span style=\"color: blue;\">CDbl</span>(<span style=\"color: blue;\">Me</span>._totalBytesBeforeCompress)))\n            <span style=\"color: blue;\">Me</span>.ResetState()\n            <span style=\"color: blue;\">Me</span>.Close()\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> StepEntryProgress(<span style=\"color: blue;\">ByVal</span> e <span style=\"color: blue;\">As</span> SaveProgressEventArgs)\n        <span style=\"color: blue;\">If</span> <span style=\"color: blue;\">Me</span>.ProgressBar2.InvokeRequired <span style=\"color: blue;\">Then</span>\n            <span style=\"color: blue;\">Me</span>.ProgressBar2.Invoke(<span style=\"color: blue;\">New</span> SaveEntryProgress(<span style=\"color: blue;\">AddressOf</span> <span style=\"color: blue;\">Me</span>.StepEntryProgress), <span style=\"color: blue;\">New</span> <span style=\"color: blue;\">Object</span>() {e})\n        <span style=\"color: blue;\">ElseIf</span> <span style=\"color: blue;\">Not</span> <span style=\"color: blue;\">Me</span>._saveCanceled <span style=\"color: blue;\">Then</span>\n            <span style=\"color: blue;\">If</span> (<span style=\"color: blue;\">Me</span>.ProgressBar2.Maximum = 1) <span style=\"color: blue;\">Then</span>\n                <span style=\"color: blue;\">Dim</span> entryMax <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Long</span> = e.TotalBytesToTransfer\n                <span style=\"color: blue;\">Dim</span> absoluteMax <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Long</span> = &amp;H7FFFFFFF\n                <span style=\"color: blue;\">Me</span>._progress2MaxFactor = 0\n                <span style=\"color: blue;\">Do</span> <span style=\"color: blue;\">While</span> (entryMax &gt; absoluteMax)\n                    entryMax = (entryMax / 2)\n                    <span style=\"color: blue;\">Me</span>._progress2MaxFactor += 1\n                <span style=\"color: blue;\">Loop</span>\n                <span style=\"color: blue;\">If</span> (<span style=\"color: blue;\">CInt</span>(entryMax) &lt; 0) <span style=\"color: blue;\">Then</span>\n                    entryMax = (entryMax * -1)\n                <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n                <span style=\"color: blue;\">Me</span>.ProgressBar2.Maximum = <span style=\"color: blue;\">CInt</span>(entryMax)\n                <span style=\"color: blue;\">Me</span>.lblStatus.Text = <span style=\"color: blue;\">String</span>.Format(<span style=\"color: #a31515;\">\"{0} of {1} files...({2})\"</span>, (<span style=\"color: blue;\">Me</span>._nFilesCompleted + 1), <span style=\"color: blue;\">Me</span>._entriesToZip, e.CurrentEntry.FileName)\n            <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n            <span style=\"color: blue;\">Dim</span> xferred <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">Integer</span> = <span style=\"color: blue;\">CInt</span>((e.BytesTransferred &gt;&gt; <span style=\"color: blue;\">Me</span>._progress2MaxFactor))\n            <span style=\"color: blue;\">Me</span>.ProgressBar2.Value = IIf((xferred &gt;= <span style=\"color: blue;\">Me</span>.ProgressBar2.Maximum), <span style=\"color: blue;\">Me</span>.ProgressBar2.Maximum, xferred)\n            <span style=\"color: blue;\">Me</span>.lblStatus.Text = <span style=\"color: blue;\">String</span>.Format(<span style=\"color: #a31515;\">\"{0} of {1} files...({2})\"</span>, (<span style=\"color: blue;\">Me</span>._nFilesCompleted + 1), <span style=\"color: blue;\">Me</span>._entriesToZip, e.CurrentEntry.FileName)\n            <span style=\"color: blue;\">MyBase</span>.Update()\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> ResetState()\n        <span style=\"color: blue;\">Me</span>.btnCancel.Enabled = <span style=\"color: blue;\">False</span>\n        <span style=\"color: blue;\">Me</span>.ProgressBar1.Value = 0\n        <span style=\"color: blue;\">Me</span>.ProgressBar2.Value = 0\n        <span style=\"color: blue;\">Me</span>.Cursor = Cursors.<span style=\"color: blue;\">Default</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> SetProgressBars()\n        <span style=\"color: blue;\">If</span> <span style=\"color: blue;\">Me</span>.ProgressBar1.InvokeRequired <span style=\"color: blue;\">Then</span>\n            <span style=\"color: green;\">'Me.ProgressBar1.Invoke(New MethodInvoker(Me, DirectCast(Me.SetProgressBars, IntPtr)))</span>\n            <span style=\"color: blue;\">Me</span>.ProgressBar1.Invoke(<span style=\"color: blue;\">New</span> MethodInvoker(<span style=\"color: blue;\">AddressOf</span> SetProgressBars))\n        <span style=\"color: blue;\">Else</span>\n            <span style=\"color: blue;\">Me</span>.ProgressBar1.Value = 0\n            <span style=\"color: blue;\">Me</span>.ProgressBar1.Maximum = <span style=\"color: blue;\">Me</span>._entriesToZip\n            <span style=\"color: blue;\">Me</span>.ProgressBar1.Minimum = 0\n            <span style=\"color: blue;\">Me</span>.ProgressBar1.<span style=\"color: blue;\">Step</span> = 1\n            <span style=\"color: blue;\">Me</span>.ProgressBar2.Value = 0\n            <span style=\"color: blue;\">Me</span>.ProgressBar2.Minimum = 0\n            <span style=\"color: blue;\">Me</span>.ProgressBar2.Maximum = 1\n            <span style=\"color: blue;\">Me</span>.ProgressBar2.<span style=\"color: blue;\">Step</span> = 2\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n\n    <span style=\"color: blue;\">Private</span> <span style=\"color: blue;\">Sub</span> btnCancel_Click(<span style=\"color: blue;\">ByVal</span> sender <span style=\"color: blue;\">As</span> System.Object, <span style=\"color: blue;\">ByVal</span> e <span style=\"color: blue;\">As</span> System.EventArgs) <span style=\"color: blue;\">Handles</span> btnCancel.Click\n        <span style=\"color: blue;\">If</span> <span style=\"color: blue;\">Me</span>.lblStatus.InvokeRequired <span style=\"color: blue;\">Then</span>\n            <span style=\"color: blue;\">Me</span>.lblStatus.Invoke(<span style=\"color: blue;\">New</span> ButtonClick(<span style=\"color: blue;\">AddressOf</span> <span style=\"color: blue;\">Me</span>.btnCancel_Click), <span style=\"color: blue;\">New</span> <span style=\"color: blue;\">Object</span>() {sender, e})\n        <span style=\"color: blue;\">Else</span>\n            <span style=\"color: blue;\">Me</span>._saveCanceled = <span style=\"color: blue;\">True</span>\n            <span style=\"color: blue;\">Me</span>.lblStatus.Text = <span style=\"color: #a31515;\">\"Canceled...\"</span>\n            <span style=\"color: blue;\">Me</span>.ResetState()\n            <span style=\"color: blue;\">Me</span>.Close()\n        <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">If</span>\n    <span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Sub</span>\n\n<span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Class</span>\n\n<span style=\"color: blue;\">Public</span> <span style=\"color: blue;\">Class</span> WorkerOptions\n    <span style=\"color: green;\">' Fields</span>\n    <span style=\"color: green;\">'Public Comment As String</span>\n    <span style=\"color: green;\">'Public CompressionLevel As CompressionLevel</span>\n    <span style=\"color: green;\">'Public Encoding As String</span>\n    <span style=\"color: green;\">'Public Encryption As EncryptionAlgorithm</span>\n    <span style=\"color: blue;\">Public</span> Folder <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span>\n    <span style=\"color: green;\">'Public Password As String</span>\n    <span style=\"color: green;\">'Public Zip64 As Zip64Option</span>\n    <span style=\"color: green;\">'Public ZipFlavor As Integer</span>\n    <span style=\"color: blue;\">Public</span> ZipName <span style=\"color: blue;\">As</span> <span style=\"color: blue;\">String</span>\n<span style=\"color: blue;\">End</span> <span style=\"color: blue;\">Class</span>\n</pre>\n</div>\n<p>&nbsp;</p>\n<p>Can you see any mistake or can you give me an example, which shows how to zip files using progressbars?</p>",
    "PostedDate": "2011-04-26T03:44:12.48-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "603431",
    "ThreadId": "255267",
    "Html": "<p>I already figured out, there is a problem with this:</p>\r\n<pre><span style=\"color: blue;\">Me</span>.ProgressBar2.Maximum = 1\r\n<span style=\"color: blue;\">Me</span>.ProgressBar2.<span style=\"color: blue;\">Step</span> = 2</pre>\r\n<p>When I set the Maximum to 2 and the Step to 1, it seems to work.</p>",
    "PostedDate": "2011-04-27T01:55:44.503-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  }
]