Использование chilkat для извлечения файлов RAR с индикатором выполнения? - PullRequest
0 голосов
/ 24 апреля 2010

Кто-нибудь знает, как показать прогресс извлечения архивов при использовании chilkat? У меня уже есть индикатор выполнения под названием "progressBar1" в моей форме. В настоящий момент вся программа зависает при запуске извлечения. Может быть, есть другая тема? Я использую этот код:

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.");
}

Если у кого-нибудь есть альтернативные способы извлечения файлов .rar, было бы здорово знать.
Спасибо.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2010

Как сказал Том, выполнение извлечения в другом потоке - это путь. Один из способов сделать это - использовать компонент BackgroundWorker . Он будет запускать отдельный поток, в котором вы можете выполнять извлечение, и вы можете периодически вызывать события, обрабатываемые в потоке пользовательского интерфейса для обновления индикатора выполнения.

2 голосов
/ 24 апреля 2010

Вы совершенно правы. Вы хотели бы сделать извлечение в фоновом потоке. Фоновый поток должен запускать события для обновления индикатора выполнения. Обязательно используйте Form.Invoke в вашем обработчике событий при вызове для обновления индикатора выполнения.

...