Как остановить BackgroundWorker и выйти из всех моих циклов - PullRequest
0 голосов
/ 16 марта 2012

У меня есть приложение, которое использует BackgroundWorker для воспроизведения файлов из списка.После того, как я нажму кнопку «Стоп», запущенный файл остановится, но не остановит воспроизведение следующего файла в списке.

Переменные в коде: playCount - сколько файлов я запустил,numberOfLoops - сколько циклов я хочу запустить, Loops - это все файлы в моем списке (listBoxFiles), а myClass.playCapture - что работает в фоновом режиме.

while (playCount < numberOfLoops && bContinuePlay && ifContinue) //play the file
{
    for (int i = 0; (i < listBoxFiles.Items.Count) && bContinuePlay && ifContinue; i++)
    {
        string path = (string)listBoxFiles.Items[i];
        myClass = new myClass(path, playSpeed);
        myClass.evePacketProgress += new myClass.dlgPacketProgress(
            (progressCount) =>
            {
                myClass._fileSelectedIndex = i;
                bgWoSingle.ReportProgress(progressCount, myClass);
            });

        if (selectedAdapter != null)
        {
            bContinuePlay = myClass.playCapture(selectedAdapter._packetDevice); //here the BackgroundWorker running
        }
    }

    playCount++;
}

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Полагаю, вам просто нужно использовать метод CancelAsync

0 голосов
/ 16 марта 2012

Похоже, вы забыли установить bContinuePlay или ifContinue в false в вашем коде остановкиЕсли это не так, предоставьте больше кода.(Где вы начинаете и останавливаете процесс)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...