views:

208

answers:

2

Hello. Does anyone know how to show the progress of archives extracting, when using chilkat? I already have a progress bar called "progressBar1" on my form. At the moment the whole program freezes when extraction is started. Maybe have another thread? I'm using this code:

Chilkat.Rar rar = new Chilkat.Rar();

bool success;

success = rar.Open("abc123.rar");
if (success != true) {
    MessageBox.Show(rar.LastErrorText);
    return;
}

success = rar.Unrar("c:/temp/unrarDest/");
if (success != true) {
    MessageBox.Show(rar.LastErrorText);
}
else {
    MessageBox.Show("Success.");
}

If anyone has any alternative ways to extract .rar files, it would be great to know.
Thanks.

+2  A: 

You are exactly correct. You would want to do the extraction in a background thread. The background thread should fire events to update the progress bar. Make sure to use Form.Invoke in your event handler when you make the call to update the progress bar.

Tom Cabanski
+2  A: 

As Tom said, doing the extraction in another thread is the way to go. One way to do that is to use the BackgroundWorker component. It will fire off a separate thread where you can do the extraction, and you can have it periodically raise events that are handled in the UI thread for updating a progress bar.

Chris Tybur